我正在尝试等待 .NET 4 中的任务结果,就像您可以使用 .NET 4.5 中的 await 关键字一样。我只是不知道该怎么做......
我的代码(证明我至少在尝试):
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 调用在不同的线程上执行,但函数必须等待结果才能返回。不幸的是,这会阻塞我的主线程,直到任务完成,我对如何让它等待而不阻塞毫无头绪。我也不想使用异步 CTP,因为那只是逃避问题。
秘方是什么?