我找不到 PostAsync 的完整示例,所以我不得不拼凑起来。因此,我不确定我正在查看的内容是调试器的限制还是我做错了。
这就是我想要做的:
我必须浏览一个列表并为列表中的每个项目进行 Web 服务调用。我的想法是我可以使用新的 4.5 异步内容来保持它在每次调用 Web 服务期间保持流畅而不会阻塞。
我做了一些研究,并在 TekPub 上观看了 Jon Skeet 的视频,但我仍然不确定我是否正确地这样做了。也就是说,当我设置断点时,我的异步方法永远不会将控制权返回给调用者。它基本上似乎与我的同步版本完全一致。
问题:
调试器出现同步是否正常,或者这是否表明我的代码未正确实现?
这是我的 Post 方法:
Public Async Function PostSecureXMLAsync(ByVal username As String, ByVal password As String, ByVal XMLtoSend As String) As Task(Of String)
Dim content = New StringContent(XMLtoSend, Encoding.UTF8, "text/xml")
Dim credentials = New NetworkCredential(username, password)
Dim handler = New HttpClientHandler() With {.Credentials = credentials}
Using client = New HttpClient(handler)
Using response = client.PostAsync(APIurl, content).Result
Return Await response.Content.ReadAsStringAsync()
End Using
End Using
End Function
这是它的使用方式:
For Each ListItem In ListObj
...
Result = XMLExchangeObj.PostSecureXMLAsync(Username, Password, Payload).Result
...
Next
我期待控制在等待来自 Web 服务的回复时返回到 For Each 循环,但根据我的断点,它似乎是同步运行的。