我正在使用file.WriteAllLines将一些文本写入文件。我希望在WriteAllLines写入文件时使用。不允许其他两个进程读取或写入文件。这是WriteAllLines的默认行为吗?
答案 0 :(得分:0)
由于内部的WriteAllLines
方法使StreamWriter
在文件中保持打开状态,直到所有行都被写入为止,其他进程也无法写入同一文件。
[更新]
此测试也证明无法读取,该测试在IOException
中抛出了readerThread
:
using System.IO;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTestProject3
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
string[] lines = new string[5000000];
for (int i = 0; i < 5000000; i++)
{
lines[i] = $"Line_{i}";
}
Thread writerThread = new Thread(() =>
{
File.WriteAllLines("C:\\tmp\\wal_test.txt", lines);
});
Thread readerThread = new Thread(() =>
{
File.ReadLines("C:\\tmp\\wal_test.txt");
});
writerThread.Start();
Thread.Sleep(100);
readerThread.Start();
}
}
}