Перехват события от сторонней программы - 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();