【发布时间】:2018-06-09 14:49:52
【问题描述】:
我有一堆 json 文件需要阅读。 是否可以将此代码转换为完全异步? 有没有更好的方法来做到这一点?
public static T LoadJsonFile<T>(this Assembly assembly, string fullFilename) where T : new()
{
T result;
Stream stream = assembly.GetManifestResourceStream(fullFilename);
using (var reader = new StreamReader(stream))
{
result = JsonConvert.DeserializeObject<T>(reader.ReadToEnd());
}
return result;
}
这不是重复的,因为我在问如何不使用 HTTPCLIENT 读取 json 文件
有样品吗?
谢谢
【问题讨论】:
-
@tura08 你指出的问题是关于 HttpClient 。我的没有 Httpclient 参与
-
通过 HTTP 或 Stream 访问是无关紧要的。正如他们在问题中所说,他们有兴趣使这条线异步:
List_ = JsonConvert.DeserializeObject<List<MyObject>>(response.Content);。如您所见,答案是将其包装在Task.Run中并等待它。您还可以使用ReadToEndAsync()异步读取您的流。 -
okish.. 你知道 Task.Run 将在线程池上创建一个线程而不是异步.. 你是说我可以更改为 ReadToEndAsync 但随后被 Task.Run 阻止将同步运行。我错了吗?
-
解决方案细节很重要,因为@DaisyShipton 试图确定这是否是 XY 问题。 meta.stackexchange.com/questions/66377/what-is-the-xy-problem
标签: c# async-await json.net