.NET 4.5 で await キーワードを使用してできるように、.NET 4 でタスクの結果を待機しようとしています。私はそれを行う方法を理解することはできませんが...
私のコード(少なくとも試していることを証明するため):
Private Function GetXDocumentFromWebLocationAsync(ByVal request As WebRequest) As XDocument
Dim queryTask As Task(Of WebResponse)
queryTask = task(Of WebResponse).Factory.FromAsync(AddressOf request.BeginGetResponse, AddressOf request.EndGetResponse, Nothing, Nothing)
Return XDocument.Load(queryTask.Result.GetResponseStream)
End Function
ご想像のとおり、GetResponse 呼び出しは別のスレッドで実行されますが、関数は結果が返るまで待機する必要があります。残念ながら、これはタスクが完了するまでメインスレッドをブロックし、ブロックせずに待機させる方法について少しの手がかりがありません。Async CTP も使用したくありません。これは、問題から逃げているだけだからです。
秘伝のタレとは?