有没有人在JSON.NET中使用JsonConvert遇到线程争用问题?我有大量的线程同时调用JsonConvert.Deserialize,它们似乎互相阻塞。 VS Profiler向我展示了我所有的并发问题都埋在Newtonsoft。*中。这是已知的东西吗?我应该做些什么来使反序列化调用并行运行吗?

我知道任何一个调用都是前向操作,并且不会自己执行线程,但是为什么要进行独立的反序列化呢?

最佳答案

如果您正在调用如下所示的非异步方法:

var obj = JsonConvert.DeserializeObject<T>(jsonValue);


这是一个阻止呼叫。考虑使用异步版本,如下所示:

 var task = Task.Factory.StartNew(() => JsonConvert.DeserializeObject<T>(jsonString));
 var value = await task;


事实证明JsonConvert.DeserializeObjectAsync()并非像Stephen提到的那样真正异步,并在此处显示(http://james.newtonking.com/json/help/index.html?topic=html/M_Newtonsoft_Json_JsonConvert_DeserializeObjectAsync_1.htm

希望这可以帮助。

编码愉快!

Cleankoder

07-28 13:39