[英]using (IDisposable) vs. class field - correct usage of ReaderWriterLockSlim
在将由不同线程使用的FileWriter
类中,我目前使用ReaderWriterLockSlim
来防止当两个线程尝试同时写入文件时发生错误,如下所示:
(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
实现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)
不能正确。 但是再说一次,如果未计划像在(2)
那样使用ReaderWriterLockSlim
,为什么还要实现IDisposable
呢?
ReaderWriterLockSlim
的正确用法是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.