我想基于App配置中的flag
锁定几行代码。因此,基于该flag
,我是否异步运行该应用程序。因此,我需要通过检查flag
来锁定几行代码的执行。所以我需要写重复的代码。下面是示例
if (flag) {
lock(dataLock){
//few lines of code
}
} else {
//repeat the above code gain here (few lines of code)
}
是否有其他方法可以保存重复的代码。
答案 0 :(得分:1)
使用Monitor.Enter代替Lock(){}?使用if语句进入并退出。
答案 1 :(得分:1)
您可以从锁中甚至从else语句中调用带有外包代码的函数。这样至少可以减少您的开销和重复的代码。
if(flag==true){
lock(dataLock){
fewLines();
}
}else{
fewLines();
}
[...]
public void fewLines(){
// put your few lines here.
}
将从锁定的上下文中运行该函数。
答案 2 :(得分:1)
if (flag)
Monitor.Enter(dataLock);
// few lines of code
if (Monitor.IsEntered(dataLock))
Monitor.Exit(dataLock);
答案 3 :(得分:1)
Monitor.Enter
方法最好,但您也可以这样做:
Action fewLinesOfCode = () =>
{
//few lines of code
};
if (flag)
{
lock (dataLock)
{
fewLinesOfCode();
}
}
else
{
fewLinesOfCode();
}