如这个网站所述(顺带一提,这是一个很棒的博客),为了让CPU密集型调用正确工作,需要使用合适的异步调用。例如,不要使用
await Task.Run(() => Thread.Sleep(100));
但是
await Task.Delay(100);
有没有类似于Json.net反序列化的东西?
await TaskEx.Run(() => JsonConvert.DeserializeObject<PocoProduct>(resultString));
使用场景:
async public Task<ProductsAnswer> RequestServerAsync()
{
// Just a wrapper for await httpWebRequest.GetResponseAsync() and await postStreamReader.ReadToEndAsync()
var resultString = await new NetworkManager().GetAsync(Constants.SERVER_REQUEST);
// await TaskEx.Run(() => JsonConvert.DeserializeObject<PocoProduct>(resultString));
var answer = await ParseProductsFromString(resultString);
return answer;
}