有没有更好的方法来实现如下所示的简单锁?
我只想转到“DOSOMETHING”(如果它尚未运行)。我应该在这里使用真正的锁吗?如果我使用锁,是否会导致一切排队等待锁释放? (这不是我想要的!)
谢谢
bool running = false;
void DataDisplayView_Paint(object sender, PaintEventArgs e)
{
// if (!this.initialSetDone)
if (!running)
{
this.running = true;
//DOSOMETHING
this.running = false;
}
}
最佳答案
不,你不想在这里使用锁。这不是线程同步问题。这是一个方法重入问题。
你可以尝试这样的事情。
bool running = false;
void DataDisplayView_Paint(object sender, PaintEventArgs e)
{
if (!this.running)
{
this.running = true;
try
{
//DOSOMETHING
}
finally
{
this.running = false;
}
}
}
关于c# - 我想知道有没有更好的方法来实现这个 "simple lock",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3557951/