bar*_*san 2 vb.net winforms async-await
我有一个 VB.NET 函数,如下所示:
Public Shared Async Function GetIdDoc() As Task(Of String)
Dim result As String = ""
'Dim Uri As String = "http://localhost:53917/api/Documenti/GetNextIdDocumenti"
Dim Uri As String = apiUri & ApiEndPoints.GetNextIdDocumenti
Using client = New HttpClient()
Using response = Await client.GetAsync(Uri)
If response.IsSuccessStatusCode Then
Dim DocumentiIDJsonString = Await response.Content.ReadAsStringAsync()
result = DocumentiIDJsonString.ToString()
End If
End Using
End Using
Return result
End Function
Run Code Online (Sandbox Code Playgroud)
我正在尝试从数据库返回文档 ID,但我得到了
System.Threading.Tasks.Task`1[System.String]
实际上它应该返回“2”的地方。请帮我解决这个问题:这个功能我做错了什么?
更新
这是调用的函数:
txtIDDoc_Detail.Text = ApiData.GetIdDoc().ToString()
Run Code Online (Sandbox Code Playgroud)
但是在文本框中我得到了上面的文本。谢谢。
我来自 C#,但应该工作相同。在较新的 .Net 版本 (>= 4.5) 中实现了 async/await。因此,如果一个方法被标记为异步并返回一个任务(应该总是如此),您需要等待它。这意味着您也必须将您的方法标记为异步。所以你的电话应该是这样的:
txtIDDoc_Detail.Text = await ApiData.GetIdDoc();
Run Code Online (Sandbox Code Playgroud)
等待等待长时间运行的任务准备好并返回它的内部值。所有异步方法都应该返回任务。如果 Method 为 void,它将是 Task。否则它可能是Task<int>或任何其他类型。所以等待它,你可以继续运行;)
| 归档时间: |
|
| 查看次数: |
8070 次 |
| 最近记录: |