因为它is mentioned here (很棒的博客,顺便说一句),为了 CPU 绑定(bind)调用的正确工作,需要适当的异步调用。例如,不
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;
}
最佳答案
该博文的重点是避免阻塞对不受 CPU 限制的操作的调用,例如延迟或磁盘/网络 IO。
解析 JSON 本质上是一个受 CPU 限制的操作;您能做的最好的事情就是将该工作移至不同的线程。
关于c# - 异步 Json.net 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19912343/