我的应用程序中有关键部分,其中包含很多代码:
这是在threadMethod中锁定访问的更好方法:
A)锁定所有块:
private object locker = new object();
private void threadMethod()
{
while(true)
{
lock(locker)
{
// do work - a lot of code here
}
Thread.Sleep(2000);
}
}
B)使用其他锁定的访问成员
canWork
: private static object locker = new object();
private bool canWork;
private bool CanWork
{
get { lock(locker) { return this.canWork; } }
set { lock(locker) { this.canWork = value; } }
}
private void threadMethod()
{
while(true)
{
if(CanWork)
{
// do work - a lot of code here
}
Thread.Sleep(2000);
}
}
在代码中的某个地方
CanWork = false;
最佳答案
两者都不是特别好。
而是尝试将不可变的参数传递给您的方法(例如,数据的副本)。您可能仍需要锁定以构造参数和收集结果,但希望这是一个短得多的时间。
关于c# - C#使用锁练习,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4266467/