这是我的班级:
public class Server
{
public string Name{get;set;}
public void DoTheJob()
{
//MoreCode
}
}
我创建了一个新的Server实例,我希望在DoTheJob()运行时使实例无法访问。
我可以这样做吗?
DoTheJob()
{
lock(this)
{
//logic
}
}
答案 0 :(得分:1)
是的,你可以,但你不应该锁定this
以避免死锁。使用类似的东西:
public class Server
{
private object lockObject = new object();
public string Name { get; set; }
public void DoTheJob()
{
lock(lockObject)
{
//MoreCode
}
}
}
如果您还想避免阅读Name
,则需要实现一个也使用相同lock
的getter和setter。