是否必须等待对单个文件的异步写入?

Do async writes to a single file have to be awaited?

调用 File.WriteAllTextAsync 多次写入单个文件而不等待结果是否安全,只要所有调用都在单个线程中进行?

安全是指:

这似乎 运行 没问题,但是否保证这样做?

for (var i = 0; i < 1000; ++i)
{
    File.WriteAllTextAsync(fileName, i.ToString());
}

不,这不安全。您可能会收到“文件已在使用”异常。 您需要等待或同步执行。

不,这不安全。不保证不会抛出任何异常或所有文本都将写入文件。它似乎起作用的唯一原因是因为 .NET 中的异步文件系统 APIs ,它们中的大多数阻塞调用线程,而不是像它们应该的那样异步启动操作。我的建议是使用同步 API 代替 (File.WriteAllText).

¹ 尽管抛出的异常可能仍未被观察到,因为异步操作是以即发即弃的方式启动的。