我在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文件?
答案 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