Ada*_*ile 3 .net c# c++ events winapi
我在本机C++进程中创建并设置/重置了一个全局事件,如下所示:
HANDLE hGlobalEvent = CreateEvent(NULL, TRUE, FALSE, _T("Global\\MyEvent"));
Run Code Online (Sandbox Code Playgroud)
是否有任何方法(即使它是由MS编写的库)在.NET(C#)进程中注册这些事件之一,以便在全局事件发生变化时触发标准.NET事件处理程序?
而且我真的不想等待事件和循环,就像在C++中使用WaitForSingleObject一样...我真的希望它是一个完全异步的事件处理程序.
我必须想象有一种简单的方法可以做到这一点......就是找不到它.
可以使用ThreadPool.RegisterWaitForSingleObject在发出事件信号时执行回调.通过使用带有字符串名称的EventWaitHandle构造函数获取指定事件对象的WaitHandle .
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) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)