在 MFC 中创建用于 WaitForSingle/MultipleObject 的 C# 句柄
Posted
技术标签:
【中文标题】在 MFC 中创建用于 WaitForSingle/MultipleObject 的 C# 句柄【英文标题】:Create C# handles which are used in WaitForSingle/MultipleObject in MFC 【发布时间】:2014-01-08 15:15:06 【问题描述】:我有一个 MFC/C++ API,它利用句柄和 WaitForSingleObject(或者,可能是 WaitForMultipleObject)。我想从 C# 前端调用这些函数,但我无法确定如何执行此操作。
例如,在我的 MFC 示例应用程序中,我执行以下操作:
request_handle = CreateEvent(NULL,TRUE,FALSE,NULL);
WorkFunction(blah, request_handle); //signals the event when it's done
x=WaitForSingleObject(request_handle,timeout);
switch(x)
case WAIT_OBJECT_0:
...
break;
case WAIT_TIMEOUT:
...
break;
具体来说,我的问题是如何创建 request_handle 并将其传递给 MFC 函数 WorkFunction 然后等待 C# 中的事件?
【问题讨论】:
在 C# 中创建 EventWaitHandle 实例并将其 Handle 属性传递给非托管代码。 【参考方案1】:与您的 CreateEvent() 调用完全相同的是 C# 代码中的 ManualResetEvent
。将其 Handle 属性传递给您的本机代码。
与您的 WaitForSingleObject() 调用完全相同的是 C# 中的 ManualResetEvent.WaitOne(int)。如果超时,则返回 false。
【讨论】:
以上是关于在 MFC 中创建用于 WaitForSingle/MultipleObject 的 C# 句柄的主要内容,如果未能解决你的问题,请参考以下文章
如何在Visual Studio 2015中创建MFC窗体应用