C#多线程写入文件时保证只有一个进程在操作
在C#中,可以使用lock语句来实现多线程写入文件时保证只有一个线程在操作。lock语句用于定义一个临界区,只允许一个线程进入该区域,其他线程必须等待。
下面是一个示例代码:
using System;
using System.IO;
using System.Threading;
class Program
{
static readonly object locker = new object(); // 定义一个用于锁定的对象
static void Main()
{
// 创建多个线程并启动
for (int i = 0; i < 5; i++)
{
Thread thread = new Thread(WriteToFile);
thread.Start();
}
Console.ReadLine();
}
static void WriteToFile()
{
lock (locker) // 使用lock语句锁定临界区
{
using (StreamWriter writer = new StreamWriter("file.txt", true))
{
writer.WriteLine($"Thread {Thread.CurrentThread.ManagedThreadId} is writing...");
}
}
}
}
在上面的示例中,我们创建了5个线程,并且每个线程都会写入一条消息到文件中。通过使用lock语句锁定临界区,保证了每次只有一个线程可以进入到WriteToFile方法中进行写入操作,并且其他线程必须等待。
这样就可以确保只有一个进程在操作文件,避免了多个线程同时写入导致的数据混乱问题
原文地址: https://www.cveoy.top/t/topic/iPbm 著作权归作者所有。请勿转载和采集!