在 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' 方法中进行写入操作,并且其他线程必须等待。

这样就可以确保只有一个进程在操作文件,避免了多个线程同时写入导致的数据混乱问题。

C# 多线程写入文件:使用 Lock 语句实现线程安全

原文地址: https://www.cveoy.top/t/topic/qvh0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录