如何检查方法是否执行?

时间:2014-01-10 09:01:01

标签: c#

我需要在执行其他方法时阻止某些方法执行,这就是为什么我要检查最后一次执行的方法。问题我没有找到有用的解决方案,请任何想法。

private void LoadScenarioNumber()
{
        //some code
}

private void NumberOfScenariosChanged(Object sender, EventArgs e)
{

   //if LoadScenarioNumber() is excuted
       return;
   else
       UpdateScenarioDataGrid();

}

5 个答案:

答案 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填充包含它的控件,然后理论上会引发事件以通知侦听器它有,因此场景网格将更新,就好像用户已经更改了控制自己。

这是一个更流畅,更不容易出错的方法,然后设置全局变量以试图跟踪已更新的内容以及何时更新。