c#和c++之间的线程同步

thread synchronization between c# and c++

我有一个 C# WPF 应用程序需要调用非托管 C++ DLL 并从中获取简单的事件通知。 DLL 将等待 .NET 中看不到的键盘事件(VK_MEDIA_PLAY_PAUSE 而应用程序没有输入焦点),并通知主应用程序。我找到了一个使用信号量进行跨进程同步的示例,但这似乎有点过分了。同样,使用命名管道、COM、套接字或 p/invoke 似乎超出了我的需要。

具体来说,我将在 WPF 应用程序中启动一个工作线程,它将等待键盘事件发出信号,然后通知主 UI 线程在它发出信号后执行某些操作。

提前致谢。

一旦我指出了命名事件的方向,解决方案就变得清晰了。在 C++ 端,CreateEvent 创建命名事件。但在 C# 方面,首先出现的 2 种事件类型是 AutoResetEvent 和 ManualResetEvent,它们不接受名称,而 EventWaitHandle 接受。一旦我发现 class,剩下的就到位了。在我的项目中,事件在 C++ 端设置以响应所需的击键,C# 端在 BackgroundWorker 线程中等待事件并在事件发生时对其进行操作。