我想我在做一些可怕的错误......
Dim s As String = GetResponse("", New KeyValuePair(Of String, String))
Public Async Function GetResponse(ByVal url As String, ByVal params As KeyValuePair(Of String, String)) As System.Threading.Tasks.Task(Of String)
Dim values = New List(Of KeyValuePair(Of String, String))
Dim httpClient = New HttpClient(New HttpClientHandler())
Dim response As HttpResponseMessage = Await httpClient.PostAsync(url, New FormUrlEncodedContent(values))
response.EnsureSuccessStatusCode()
Return Await response.Content.ReadAsStringAsync()
End Function
请问任何想法?
答案 0 :(得分:4)
你的函数不是字符串。它返回一个Task(Of String),就像它在错误消息中所说的那样,你可以在函数声明中看到它。你看,它没有像你想的那样工作。
解决方案应该是:尝试拨打GetResponse("", New KeyValuePair(Of String, String)).Result
,这样就可以做到你想要的。结果类似于任务的类型参数。
答案 1 :(得分:2)
你应该Await
任务去打开"他们的结果如下:
Dim s As String = Await GetResponse("", New KeyValuePair(Of String, String))
是的,这确实意味着调用方法确实需要Async
,因此它的来电者必须使用Await
等。这非常自然; Async
确实"感染"像这样的代码库。