【小5聊】C# 多线程下对同一个文件进行写入操作之多线程锁

【场景描述】

假如A、B、C三个线程同时对同一个test.txt文本文档进行操作,这个时候如果没有进行锁的操作,那么就会出现错误提示文件正在被操作。

【多线程锁解决】

支持单个写线程和多个读线程的锁,.net 3.5>

可定义在单个的一个方法类里

static ReaderWriterLockSlim LogWriteLock = new ReaderWriterLockSlim();

在单个线程里调用写入txt文本文档方法时,LogWriteLock.IsWriteLockHeld的值是true,会自动进入写入锁-EnterWriteLock,完成后退出写入锁。

try
{
    if (!LogWriteLock.IsWriteLockHeld)
        LogWriteLock.EnterWriteLock(); //进入写入锁

}
catch (Exception ex)
{
    string msg = ex.Message;

    if (LogWriteLock.IsWriteLockHeld)
        LogWriteLock.ExitWriteLock(); //退出写入锁
}
finally
{
    if (LogWriteLock.IsWriteLockHeld)
        LogWriteLock.ExitWriteLock(); //退出写入锁
}

注:不在线程内调用并使用锁方法可能会报错

猜你喜欢

转载自blog.csdn.net/lmy_520/article/details/109144415