2012-05-28 32 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