C # "Постоянный" вызов DLL - PullRequest
0 голосов
/ 03 марта 2011

Я вызываю метод из самодельной DLL. Этот метод вызывает событие, и он вызывается EventHander внутри класса.

Проблема в том, что управление выполнением возвращается к главной программе (веб-класс на диаграмме), которая выполняет вызов класса до того, как обработчик событий сможет перехватить событие.

Вот небольшая диаграмма того, как это должно работать http://dl.dropbox.com/u/5654637/model1.png

И это то, что он на самом деле делает http://dl.dropbox.com/u/5654637/model2.png

Есть ли способ сделать вызов метода класса и убедиться, что он выполнит все задачи, прежде чем вернуть управление вызывающей стороне?

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 марта 2011

Вы можете использовать ManualResetEvent .

В вашем Method1 вы ждете, когда будет установлено событие.А в обработчике событий E_DataEvent вы устанавливаете сигнал.

0 голосов
/ 03 марта 2011

Мне нужно посмотреть, что происходит внутри вашей другой DLL. По умолчанию все должно работать так, как вы хотите. Если вы не сделаете что-то, чтобы сделать это асинхронным, события в .NET будут синхронными. Когда вы запускаете событие, код, который запускает это событие, не будет продолжать выполняться до тех пор, пока все делегаты, которые прослушивают событие, не будут выполнены до завершения (или один из делегатов не сгенерирует исключение).

Заявление о том, что код «ждет», пока не завершатся выполнение делегатов, даже не является точным утверждением, событие можно рассматривать как набор делегатов, а когда событие вызывается, оно проходит по всем делегатам и выполняет их по одному.

...