using (var stream = new FileStream(
this.filePath,
FileMode.Append,
FileAccess.Write,
FileShare.ReadWrite))
{
using (var writer = new StreamWriter(stream))
{
writer.Write("A randomly generated string from process X thread Y");
writer.Flush();
stream.Flush();
}
}
我基本上在2个不同的Visual Studios(不同的解决方案)中的2个测试方法中使用这段代码。我每次测试运行2个线程,对此进行1000次调用。
然而,当我执行此操作时,我执行的任何测试的所有行都会被写入文件,然后所有行都被其他进程写入文件。我认为writer.Flush()
和stream.Flush()
调用会阻止这种情况发生。
如何从2个不同的进程同时写入文件?如果我同时从SAME进程中的2个不同线程写入文件,则按预期进行写入(线程之间交替进行许多)。但是对于两个不同的过程,无论哪一个首先开始写它的所有,然后另一个过程。这是为什么?