PostAsync の完全な例が見つからなかったため、1 つをつなぎ合わせる必要がありました。したがって、表示されているものがデバッガーの制限なのか、それとも単純に間違っていたのかはわかりません。
これは私がやろうとしていることです:
リストを調べて、リストの各項目に対して Web サービスを呼び出す必要があります。私の考えでは、新しい 4.5 非同期機能を使用して、Web サービスへの呼び出しごとにブロックすることなく流れを維持できると考えています。
かなりの調査を行い、TekPub で Jon Skeet のビデオを見ましたが、これが正しく行われているかどうかはまだわかりません。つまり、ブレーク ポイントを設定すると、非同期メソッドが呼び出し元に制御を返すことはありません。基本的に、私の同期バージョンとまったく同じように動作するようです。
質問:
デバッガーが同期しているように見えるのは正常ですか、それともコードが正しく実装されていないことを示していますか?
これが私の投稿方法です:
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 ループに戻ることを期待していましたが、私のブレーク ポイントに基づいて、同期的に実行されているようです。