我正在 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 文件?
您可以创建一个FileStream
对象并使用 WriteAsync
方法,而不是使用 File.WriteAllText
。
File.WriteAllText
是一种在内部使用StreamWriter
的便捷方法。这里的写入方法是同步的。StreamWriter
在内部使用FileStream
:-)
正如消息所建议的那样,您可以执行以下操作:
Task.Run(() => File.WriteAllText(filePath, output));
MSDN: https://msdn.microsoft.com/en-us/library/hh195051(v=vs.110).aspx