Просмотр глобальных событий, созданных собственным процессом в .NET-процессе - PullRequest
3 голосов
/ 17 мая 2009

У меня есть глобальное событие, созданное и установленное / сброшенное в собственном процессе C ++, которое создается следующим образом:

HANDLE hGlobalEvent = CreateEvent(NULL, TRUE, FALSE, _T("Global\\MyEvent"));

Есть ли способ (даже если это библиотека, не написанная MS), чтобы зарегистрироваться для одного из этих событий в процессе .NET (C #), чтобы стандартные обработчики событий .NET запускались при изменении глобального события
И я не просто хочу ждать события и цикла, как это происходит в C ++ с WaitForSingleObject ... Я действительно хотел бы, чтобы это был полностью асинхронный обработчик событий.

Я должен представить, что есть простой способ сделать это ... просто не могу его найти.

1 Ответ

6 голосов
/ 17 мая 2009

ThreadPool.RegisterWaitForSingleObject может использоваться для выполнения обратного вызова, когда событие сигнализируется. Получите WaitHandle для именованного объекта события, используя EventWaitHandle конструктор , который принимает строковое имя.

bool createdNew;
WaitHandle waitHandle = new EventWaitHandle(false,
    EventResetMode.ManualReset, @"Global\MyEvent", out createdNew);
// createdNew should be 'false' because event already exists
ThreadPool.RegisterWaitForSingleObject(waitHandle, MyCallback, null,
    -1, true);

void MyCallback(object state, bool timedOut) { /* ... */ }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...