如何检查eventhandler中的条件

时间:2010-08-23 13:17:31

标签: c# flags event-handling

我有一个修改方法,在

中执行ClientModify操作
 public bool Modify()
{
bool retval = false;

retval = Spa.ClientModify(col);

}

这里我想要的是ClientModify应该只在事件处理程序“ServerEvents”中完成三个事件后执行,否则它应该返回retval为false。如何在执行“Spa.ClientModify”操作之前进行检查

static private void ServerEvents(eventType type, event this_event, object passback)
{

         if (this_event.type == eventType.SPD_spurtEvent)
        { 

           if (this_event.objectName == "ready")
            {                  
           // some operation 
            }
           else if (this_event.objectName == "info")
            {
           // some operation
            }

           else if (this_event.objectName == "serverstate")
            {
           // some operation
            }
        }

}

我在eventhandler“ServerEvents”中添加了一个变量bool Yes = false,并且检查完成后 否则if(this_event.objectName ==“serverstate”)我把它设为yes = true,但这里我遇到的问题是我不能 能够在Modify()方法中获得是的布尔变量,我将得到ServerEvents,但无法实例化。如何 我可以这样做,还是有任何其他机制

1 个答案:

答案 0 :(得分:2)

如果您需要检查是否已完成3个方法,并且它们当前没有留下允许您进行检查的已更改属性的跟踪,那么您需要做的是让它们在每个方法执行时修改一些属性,然后检查修改方法中的每个属性,看看这些事件是否已执行。

public class MyState
{
    public bool Method1HasExecuted { get; set; }
    public bool Method2HasExecuted { get; set; }
    public bool Method3HasExecuted { get; set; }
}

public class MyClass
{
    public MyState MyClassState { get; set; }

    public void Method1() { MyClassState.Method1HasExecuted = true; }
    public void Method2() { MyClassState.Method2HasExecuted = true; }
    public void Method3() { MyClassState.Method3HasExecuted = true; }

    public bool Modify()
    {
        return MyClassState.Method1HasExecuted && MyClassState.Method2HasExecuted && MyClassState.Method3HasExecuted ? Spa.ClientModify() : false;
    }
}