写在前面
当多个线程同时需要对一个文件进行写入操作时,可以使用System.Threading.ReaderWriterLockSlim对象,来对读写操作进行锁定处理,由于不同的 ReaderWriterLockSlim 对象,如果锁定的是同一个文件,也会被视为不同的锁进行管理,所以在使用是务必使用同一个ReaderWriterLockSlim 对象,比如可以做个单例或者直接声明为static变量。
代码实现
public class Program
{
static int SuccessCount = 0;
static int FailureCount = 0;
static ReaderWriterLockSlim WriteLock = new ReaderWriterLockSlim();
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
Parallel.For(0, 30, action =>
{
WriteTest();
});
Console.WriteLine("写入中...");
Console.ReadLine();
}
static void WriteTest()
{
try
{
WriteLock.EnterWriteLock();
SuccessCount++;
File.AppendAllText("test.txt", $"{Thread.CurrentThread.ManagedThreadId}, {DateTime.Now