Приостановить основной поток, выполнить несколько обратных вызовов, а затем возобновить основной поток - PullRequest
0 голосов
/ 13 апреля 2020

Мне нужно кое-что сделать, выполнить некоторые события обратного вызова, а затем возобновить свою процедуру. Я использую приложение Win Forms ... Я напишу вам небольшой пример.

 void Do()   // On main Thread
    {
         DoPartOne();

         // Her i want to execute the callbacks events... and then execute 
        //parttwo

         DoPartTwo();
    }

    void DoPartOne() // during this method i send commands to my connected service
    {
         StaticClass.Property = null;
    }

    void DoPartTwo() 
    {
         StaticClass.Property = something...
    }

    void MyCallBackOnEvent(MyEvent)
    {
       if(StaticClass.Property == null)
           DoThis();
       else
           DoThat();
    }

Во время первой вечеринки мой клиент отправляет команду в мою подключенную службу, и он отвечает мне несколькими переменными числами событий. ... Сначала мне нужно выполнить обратные вызовы моего метода PartTwo (), но я исправляю этот обратный вызов, выполняю его, когда я заканчиваю sh метод Do (). Вы предлагаете мне другие реализации?

1 Ответ

0 голосов
/ 13 апреля 2020

Сделайте свое действие, затем дождитесь, пока переменная станет истинной:


while(!workIsDone)
{
   Thread.sleep(100);
}

Затем в вашем событии установите переменную в вашем событии, например, так:

void MyCallBackOnEvent(MyEvent)
{  

    // Event has fired, so we can set workIsDone to true and then the main thread will stop the while loop, and continue normally.

    workIsDone = true;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...