Перехват события от сторонней программы - C#
Формулировка задачи:
Добрый день!
Ситуация в следующем... есть программа от стороннего разработчика, в которой API интерфейс реализован так, что есть корневой COM-объект и набор методов для запроса данных, но которые ничего не возвращают. Сами данные передаются в виде аргументов событий объекта, которые нужно перехватывать.
С созданием обработчика для перехвата событий и получением данных проблем нет.
Проблема в том, что, когда на форме я нажимаю кнопку для получения данных, запускается обработчик события (button_click), в котором я создаю свой объект, запускаю метод на получение данных и в котором прописан обработчик события на получение данных от сторонней программы. НО при этом обработчик события от сторонней программы запускается только после того, как завершит свое действие обработчик button_click.
Выводил запрос данных в отдельный поток - не помогло. Поток создавал внутри своего объекта.
Можно ли как-нибудь сделать так, чтобы по нажатию кнопки обработка события от сторонней программы производилась до завершения работы button_click ?
P.S. Для создания форм использую WPF.
Решение задачи: «Перехват события от сторонней программы»
textual
Листинг программы
bool proceed=false; int timeout=1500; // в миллисекундах // создание обработчика события от сторонней программы ALIENPROG.OIEvents_OnGetDataEventHandler alienProg_OnGetData = (object sender, int number) => { // СЮДА ЗАХОДИТ ТОЛЬКО ПОСЛЕ ТОГО КАК ЗАВЕРШИТСЯ Button_Click() в основном проекте data.Add(number); proceed=true; }; // добавление обработчика события OnGetData для объекта запроса alienProg alienProg.OnGetData += alienProg_OnGetData; StopWatch sw = new Stopwatch(); sw.Start(); while(!proceed&&sw.ElapsedMilliseconds<timeout) Thread.Sleep(50);//Ждем по 50 миллисекунд sw.Reset();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д