我在本地 C++ 进程中创建并设置/重置了一个全局事件,它是这样创建的:
HANDLE hGlobalEvent = CreateEvent(NULL, TRUE, FALSE, _T("Global\\MyEvent"));
有没有什么方法(即使是使用不是由 MS 编写的库)在 .NET (C#) 进程中注册这些事件之一,以便在全局事件更改时触发我的标准 .NET 事件处理程序?
而且我真的不想等待事件和循环,就像 C++ 中使用 WaitForSingleObject 的方式一样...我真的希望它成为一个完全异步的事件处理程序。
我不得不想象有一种简单的方法可以做到这一点……只是找不到。
最佳答案
ThreadPool.RegisterWaitForSingleObject可用于在事件发出信号时执行回调。使用 EventWaitHandle constructor 为指定事件对象获取 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) { /* ... */ }
关于c# - 在 .NET 进程中观看本地进程创建的全局事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/873729/