在FileWriter
将由不同线程使用的类中,我目前使用 aReaderWriterLockSlim
来防止两个线程尝试同时写入文件时发生错误,如下所示:
(1)
public class FileWriter
{
private ReaderWriterLockSlim readerWriterLock = new ReaderWriterLockSlim();
public void WriteToFile(string message)
{
try
{
this.readerWriterLock.EnterWriteLock();
// the writing happens here
}
finally
{
this.readerWriterLockSlim.ExitWriteLock();
}
}
}
这确实有效。但在那之后,我读到了ReaderWriterLockSlim
implements IDisposable
,所以我想知道是否
(2)
public class FileWriter
{
public void WriteToFile(string message)
{
using (ReaderWriterLockSlim readerWriterLockSlim = new ReaderWriterLockSlim())
{
readerWriterLockSlim.EnterWriteLock();
// the writing happens here
readerWriterLockSlim.ExitWriteLock();
}
}
}
将是“更好”的方法,以及它是否会引入一些新的缺点。我的直觉告诉我,我可能不应该在ReaderWriterLockSlim
每次调用该方法时都创建一个新方法,而应该只创建一次,如(2)
.
可悲的是,它不起作用(就好像我什至没有使用过锁一样),所以我认为这(2)
是不正确的。但是话又说回来,如果不打算像 in 那样使用它,为什么还要ReaderWriterLockSlim
实施呢?IDisposable
(2)
的正确用法是ReaderWriterLockSlim
什么?