события, многопоточность,...
От: Holms США  
Дата: 10.07.08 16:02
Оценка:
Есть,
приложение А (пА) — простое WinForms app.
приложение Б (пБ) — class library в котором есть некий класс который возбжудает некоторые события.
пА — подключенно к событиям пБ и модифицирует свои визуальные обьекты.
Всё работало хорошо пока пБ не стало многопоточным и теперь события выбрасываются из потока отличного от главного потока пА.
Ясно что теперь в пА в каждом обработчике события где изменяются визуальные контролы надо использовать BeginInvoke, и это прекрасно работает, но
пА настлько большое что займёт много времени что-бы найти все такие места и добавить нужный код.
Поэтому возник вопрос, как возбуждать события в пБ которые бы были в том же потоке что и главный поток пА.

пБ

public event OnTimestamp NewTimestamp;
public delegate void OnTimestamp(DateTime Stamp);
...
m_ddfClient.NewTimestamp += new Client.NewTimestampEventHandler(m_ddfClient_NewTimestamp); //это многопоточное событие, 3rd party object
...
void m_ddfClient_NewTimestamp(object sender, Client.NewTimestampEventArgs e)
{
  if (NewTimestamp != null) 
    NewTimestamp(e.Timestamp); //это наше событие, должно вызыватся в том же потоке что и главный поток пА
}

Как присоеденить пА и пБ что-бы наши события из пБ бы-ли как single-threaded?

Спасибо
The life is relative and reversible.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.