我今天遇到了一个奇怪的问题...... 我的代码在c#中的await方法上运行(没有错误或是......)。
user = await JsonConvert.DeserializeObjectAsync<User>(content);
但当我删除“等待”时,我的代码可以运行......
user = JsonConvert.DeserializeObjectAsync<User>(content).Result;
我的HttpClient存在同样的问题:
作品
using (HttpResponseMessage response = client.PostAsync(url, posts).Result)
不起作用
using (HttpResponseMessage response = await client.PostAsync(url, posts))
前一天问题不存在,如果我将我的代码放在另一个类中,它可以正常工作
输出:
The thread 0xe44 has exited with code 259 (0x103).
The thread 0x81c has exited with code 259 (0x103).
The thread 0x150c has exited with code 259 (0x103).
The thread 0x1660 has exited with code 259 (0x103).
我重建了,我仍然存在这个问题。
有人知道答案吗?
答案 0 :(得分:5)
您遇到了我在博客上描述的common deadlock issue。
要解决此问题,请一直使用await
;从您的代码中删除所有Task.Wait
或Task<T>.Result
来电。