Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > Обработка "искусственных" событий |
Автор: Ламо 8.1.2007, 21:24 |
Доброго времени суток, господа! Суть проблемы в следующем: Есть желание изобразить в отдельном потоке что-то типа цикла обработки сообщений с функцией обработки этих самых сообщений соответственно (типа как в WinAPI). Мне это все представляется как проверка "очереди" в бесконечном цикле и вызов соответствующего обработчика с соответствующими же парпметрами. И вот отсюда начинают возникать вопросы... 1) следует ли вызывать этот самый обработчик также в новом потоке для предотвращения "заморозки" всей очереди сообщений? Или может уже в обработчикереагировать на события в разных потоках? Или еще как-то? 2) как организовать сам цикл, чтоб не переусердствовать с нагрузкой на проц. + еще связаный вопрос: возможно ли организовать автоматический вызов события, т.е. не проверяя вручную условие для наступления этого события? Так, например, если в стриме появились данные для чтения, то вызвать какое-то событие. Вот кажется и все. Жду ваших мнений. |
Автор: mr.DUDA 9.1.2007, 00:18 |
Если речь о своём приложении (т.е. события из своей проги), то поможет Application.AddMessageFilter в паре со своим объектом, реализующим интерфейс IMessageFilter. Если речь о перехвате сообщений из других окон системы, то копать нужно в сторону windows hook-ов (SetWindowsHookEx и т.п.), кое-какие примеры есть на http://www.codeproject.com и http://www.rsdn.ru |
Автор: Ламо 9.1.2007, 00:43 |
Спасибо. Речь идет о своем приложении. Для понятности скажу, что в данный момент это попытка слепить управляемый поток, т.е. ход выполнения которого будет управляться основным потоком приложения, в зависимости от действий юзера. Таким образом обработчик сообщений потока будет получать только ползовательские сообщения, и управляемый поток никогда не должен завершаться, а тупо ждать инструкций, пока не получит какой-нибудь MESSAGE_END. |