2012-05-28 33 views
0

我测试了httpClient sendAsync方法。同步调用它工作正常。但是,当我尝试执行异步http请求时,任务在处理消息之前终止。遇到这个问题的任何机构?HttpClient SendAsync线程回调在分析响应之前死亡

此同步调用工作

HttpRequestMessage httprequest = new HttpRequestMessage(httpmethod, "http://www.google.ca"); 
var result = _httpClient.SendAsync(httprequest, HttpCompletionOption.ResponseContentRead, cancellationToken); 
HttpResponseMessage response = result.Result; 

但Asynchrnous不能正常工作。当我尝试解析响应时,线程死亡。

HttpRequestMessage httprequest = new HttpRequestMessage(httpmethod, "http://www.google.ca"); 
var result = await _httpClient.SendAsync(httprequest, HttpCompletionOption.ResponseContentRead, cancellationToken); 
HttpResponseMessage response = result; 

任何帮助表示赞赏。

+0

你是什么意思的“线程死亡”?你看到一个异常,或者应用程序退出? –

+0

它退出应用程序并在输出窗口中显示以下消息。 [3408] vstest.executionengine.appcontainer.x86.exe:程序跟踪'已退出,代码为0(0x0)。这种情况只存在于单元测试中。在示例应用程序中它工作正常。 – user1331889

回答

1

如果您使用VS11测试版,请确保您的单元测试返回Task而不是void

如果您使用VS2010或VS11 Dev Preview,那么您可以使用我的Async Unit Tests项目。

全部细节on my blog,但它归结为:当它有异步等待

  • async返回。
  • 在单元测试中,它返回到测试运行器,测试完成。
+0

谢谢你的快速回答。是的,它改变了单元测试返回任务后正常工作。 – user1331889