Windows Phone 异步调用终止

Windows Phone asynchronous call terminates

我正在为小型 windows phone 应用程序创建一个 Rest 通信接口,因为您无法调用 SOAP Web 服务。界面简单,使用 JsonConverter 解析 json 个响应。

代码如下所示

    public class Communicate<RequestType,ResposeType> where ResposeType:class  where RequestType :class
{

     public async Task< ResposeType> CommunicateSvr(RequestType _parameter,string methodName,string serverIp)
     {
         String reqData = JsonConvert.SerializeObject(_parameter);

         HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, serverIp+methodName);
         request.Content = new StringContent(reqData, Encoding.UTF8, "application/json");

         HttpClient client = new HttpClient();
         client.DefaultRequestHeaders
             .Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

         HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);



         if (response.StatusCode == HttpStatusCode.OK)
             return JsonConvert.DeserializeObject<ResposeType>(await response.Content.ReadAsStringAsync());
         else
             throw new Exception("Error connecting to " + serverIp+methodName+ " ! Status: " + response.StatusCode);

     }
}

我遇到了一个大问题。当代码到达

HttpResponseMessage response = await 
client.SendAsync(request,HttpCompletionOption.ResponseHeadersRead);            

线程结束,终止,应用程序似乎停止了。仍然是 运行 但没有做任何事情。我一个接一个地设置了两个断点,但从未达到第二个。我不知道怎么了,我在网上搜索了很多,但没有发现任何有用的东西。提前致谢,等待您的回复

在输出 windows 上,我收到以下消息:

The thread 0xdec has exited with code 259 (0x103).
The thread 0x2180 has exited with code 259 (0x103).

你可能是我在我的博客上解释的 calling Task.Wait or Task<T>.Result further up your call stack, which will cause a deadlock。在这种情况下,您的 UI 线程将死锁(不退出)。

最好的解决方法是将 WaitResult 更改为 await