JSON.net异步写入文件

时间:2016-02-09 21:27:26

标签: c# asynchronous json.net uwp

我在IoT Core中编写UWP应用程序,需要将数据写入JSON文件。

string output = JsonConvert.SerializeObject(project, Formatting.Indented);
string filePath = @"path/to/file.json";

File.WriteAllText(filePath, output);

尝试运行程序时,我收到一条错误消息:

  

不应在UI线程上执行同步操作。   考虑在Task.Run中包装此方法。

我意识到同步写入文件是一个坏主意,但我不能为我的生活弄清楚如何异步地执行它。我该如何保存我的JSON文件?

2 个答案:

答案 0 :(得分:3)

您可以创建FileStream对象并使用WriteAsync方法,而不是使用File.WriteAllText

File.WriteAllText是一种在内部使用StreamWriter的便捷方法。这里的write方法是同步的。而StreamWriter uses a FileStream internally: - )

答案 1 :(得分:0)

如消息所示,您可以这样做:

Task.Run(() => File.WriteAllText(filePath, output));

MSDN:https://msdn.microsoft.com/en-us/library/hh195051(v=vs.110).aspx