Как проверить условия в обработчике событий - PullRequest
0 голосов
/ 23 августа 2010

У меня есть метод Modify, который выполняет операцию ClientModify внутри

 public bool Modify()
{
bool retval = false;

retval = Spa.ClientModify(col);

}

Здесь я хотел, чтобы ClientModify выполнял только после трех событий, завершенных в обработчике событий «ServerEvents», в противном случае он должен возвращать значение 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
            }
        }

}

Как я добавил переменную bool Yes = false в обработчик событий "ServerEvents", и как только эта проверка завершена иначе, если (this_event.objectName == "serverstate") я сделал это как yes = true ,, но здесь проблема, с которой я сталкиваюсь, - я не могу в состоянии получить да логическую переменную внутри метода Modify (), я получу ServerEvents, но не смог создать экземпляр. Как Могу ли я сделать это или есть какой-то другой механизм для этого

1 Ответ

2 голосов
/ 23 августа 2010

Если вам нужно проверить, были ли завершены 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;
    }
}
...