gpt4 book ai didi

vb.net - 为什么异步函数返回 System.Threading.Tasks.Task`1[System.String]?

转载 作者:行者123 更新时间:2023-12-05 09:19:33 24 4
gpt4 key购买 nike

我有一个 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

我正在尝试从数据库返回文档 ID,但我得到了

System.Threading.Tasks.Task`1[System.String]

实际应该返回“2”的地方。请帮我解决这个问题:这个函数我做错了什么?

更新

这里是调用的函数:

 txtIDDoc_Detail.Text = ApiData.GetIdDoc().ToString()

但在文本框中我得到了上面的文本。谢谢。

最佳答案

我来自 C#,但工作原理应该相同。在较新的 .Net 版本 (>= 4.5) 中实现了异步/等待。因此,如果一个方法被标记为异步并返回一个任务(应该总是这样),你需要等待它。这意味着您也必须将您的方法标记为异步。所以你的电话应该是这样的:

txtIDDoc_Detail.Text = await ApiData.GetIdDoc();

等待直到长时间运行的任务准备就绪并返回它的内部值。所有异步方法都应返回任务。如果方法是无效的,它将是任务。否则它可能是 Task<int>或任何其他类型。所以等待它,你可以继续运行 ;)

关于vb.net - 为什么异步函数返回 System.Threading.Tasks.Task`1[System.String]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40291526/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com