【发布时间】:2010-06-30 22:03:49
【问题描述】:
假设我有这样的方法:
public void MyCoolMethod(ref bool scannerEnabled)
{
try
{
CallDangerousMethod();
}
catch (FormatException exp)
{
try
{
//Disable scanner before validation.
scannerEnabled = false;
if (exp.Message == "FormatException")
{
MessageBox.Show(exp.Message);
}
}
finally
{
//Enable scanner after validation.
scannerEnabled = true;
}
}
它是这样使用的:
MyCoolMethod(ref MyScannerEnabledVar);
扫描器可以随时在单独的线程上触发。如果我们正在处理异常,我们的想法是不要让它发生。
我的问题是,对 MyCoolMethod 的调用是在设置 scannerEnabled 时更新 MyScannerEnabledVar 还是在方法退出时更新它?
注意:这段代码不是我写的,我只是想安全地重构它。
【问题讨论】:
-
我认为你在重构这个是正确的。
-
您可能想要查看互斥锁。它们就是为此目的而设计的。
标签: c# reference parameter-passing