c# - 异步 Json.net 反序列化

标签 c# json windows-phone-7 asynchronous json.net

因为它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/

相关文章:

c# - 如何在忽略大小写的情况下测试枚举是否已定义?

javascript - 将字符串文字解析为枚举数组

php - 使用 PHP 获取 &lt;script type ="application/ld+json"> 的内容

javascript - 将存储在文件中的 json 分配给 js 变量

c# - 从项目文件夹动态加载图像 - Windows Phone 7

windows - 使用 CSS3、HTML5 和 Javascript 重新创建 WP7 Metro UI 的外观

c# - 如何在 C# 中编写文件系统观察程序?

c# - 在 C# 中旋转色调

c# - 显示 SelectedItem 的属性

c# - C#中的序列化