我需要在执行其他方法时阻止某些方法执行,这就是为什么我要检查最后一次执行的方法。问题我没有找到有用的解决方案,请任何想法。
private void LoadScenarioNumber()
{
//some code
}
private void NumberOfScenariosChanged(Object sender, EventArgs e)
{
//if LoadScenarioNumber() is excuted
return;
else
UpdateScenarioDataGrid();
}
答案 0 :(得分:5)
您可以在方法中设置一个全局布尔值,如下所示:
private bool loadScenarioNumberExecuted = false;
private void LoadScenarioNumber()
{
//some code
loadScenarioNumberExecuted = true;
}
private void NumberOfScenariosChanged(Object sender, EventArgs e)
{
if (loadScenarioNumberExecuted)
return;
UpdateScenarioDataGrid();
}
作为替代方案,您可以使用状态驱动模式,其中您可以枚举可能的状态并将当前状态分配给全局变量。
有关状态驱动编程的更多信息,请阅读以下文章: http://www.codeproject.com/Articles/509234/The-State-Design-Pattern-vs-State-Machine
答案 1 :(得分:2)
private bool executed;
private void LoadScenarioNumber()
{
//some code
executed = true;
}
private void NumberOfScenariosChanged(Object sender, EventArgs e)
{
if (executed)
return;
else
UpdateScenarioDataGrid();
}
答案 2 :(得分:2)
boolean isExecuted = false;
private void LoadScenarioNumber()
{
// your code
isExecuted = true;
}
private void NumberOfScenariosChanged(Object sender, EventArgs e)
{
if (isExecuted)
return;
else
UpdateScenarioDataGrid();
}
答案 3 :(得分:1)
通常你使用例如bool _scenarioNumberLoaded = false
来检查某段代码是否被执行。
答案 4 :(得分:1)
听起来你的第一个功能是基于数字更新场景网格(当从磁盘加载时),并且事件处理程序响应用户输入并以相同的方式更新网格,并且你正在尝试避免两次调用该更新函数。
一个更清晰的解决方案是让LoadScenariosNumber填充包含它的控件,然后理论上会引发事件以通知侦听器它有,因此场景网格将更新,就好像用户已经更改了控制自己。
这是一个更流畅,更不容易出错的方法,然后设置全局变量以试图跟踪已更新的内容以及何时更新。