我有一堆属性,我将使用读/写锁.我可以使用a try finally或a using子句来实现它们.
在try finally我之前try,我将获得锁定,然后释放finally.在该using子句中,我将创建一个在其构造函数中获取锁的类,并在其Dispose方法中释放.
我在很多地方使用读/写锁,所以我一直在寻找可能更简洁的方法try finally.我有兴趣听听一些关于为什么不推荐一种方式的想法,或者为什么一种方式可能比另一方更好.
方法1(try finally):
static ReaderWriterLock rwlMyLock_m = new ReaderWriterLock();
private DateTime dtMyDateTime_m
public DateTime MyDateTime
{
get
{
rwlMyLock_m .AcquireReaderLock(0);
try
{
return dtMyDateTime_m
}
finally
{
rwlMyLock_m .ReleaseReaderLock();
}
}
set
{
rwlMyLock_m .AcquireWriterLock(0);
try
{
dtMyDateTime_m = value;
}
finally
{
rwlMyLock_m .ReleaseWriterLock();
}
}
}
Run Code Online (Sandbox Code Playgroud)
方法2:
static ReaderWriterLock rwlMyLock_m = new ReaderWriterLock();
private DateTime dtMyDateTime_m
public …Run Code Online (Sandbox Code Playgroud) 是否存在我应该(或不应该?)使用"使用"块的特定情况:
using(SomeType t = new SomeType()){
...
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
什么是C#使用块,为什么要使用它?
我正在将旧网站转换为C#,我不确定何时应该使用'使用'.有没有一般指导方针?我知道它的好处,但我并不是100%确定如何使用它.是每次我'新'的方法/财产?
SqlConnection awesomeConn = new SqlConnection(connection);
Run Code Online (Sandbox Code Playgroud) 可能重复:
哪个更好,何时:使用语句或在C#中的IDisposable上调用Dispose()?
我什么时候应该在C#中使用"使用"块?
使用if语句?
正确地说,我将如何使用using声明?我有一个教程打开,我不明白.我可以看到超过1种不同的实现方式.哪种方式正确或偏好?