【发布时间】:2017-03-05 21:19:21
【问题描述】:
假设我有
class a {
public bool this[int index] { ... }
}
我如何lock()这个运营商?这样如果有人尝试调用aInst[4],例如,它会阻塞直到lock() 块完成执行?
【问题讨论】:
标签: c# multithreading thread-safety locking
假设我有
class a {
public bool this[int index] { ... }
}
我如何lock()这个运营商?这样如果有人尝试调用aInst[4],例如,它会阻塞直到lock() 块完成执行?
【问题讨论】:
标签: c# multithreading thread-safety locking
我不太确定问题是什么 - 您发布的代码只是一个索引器属性。在该属性的主体中,您可以像在任何其他属性或方法中一样锁定对象。
class a
{
private readonly object _lock = new object();
public bool this[int index]
{
get
{
lock (_lock)
{
return ...;
}
}
set
{
lock (_lock)
{
... = value
}
}
}
public string AMethod()
{
lock (_lock)
{
return ...;
}
}
}
【讨论】: