У меня есть DLL, которая возвращает всю информацию асинхронно к нескольким обработчикам событий. Когда я нажимаю кнопку, я вызываю ряд функций в DLL, но следующую функцию не следует вызывать, пока предыдущая функция не запустила обработчик события.
Button_Click_Handler() {
LCV.Load() // Returns immediately, Fires OnLoaded or OnError when done.
// Pause execution here and wait the for OnLoaded or OnError event to fire.
LCV.Read() // Returns immediately, Fires OnCard Or OnError when done.
// Pause execution here and wait the for OnCard or OnError event to fire.
LCV.Put(x) // Returns immediately, Fires OnPut Or OnError when done.
// Pause execution here and wait the for OnPut or OnError event to fire.
}
Есть ли способ дождаться возникновения события, не подключая обработчик событий и не используя сигнализацию? Распространение потока через весь обработчик событий было бы очень грязным и непростым для подражания. Если код находился в самих обработчиках событий, он должен знать «в каком режиме» он находится и выполнять разные фрагменты кода. Как я уже сказал, очень грязный.