在 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# 句柄的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MFC 中创建圆角矩形按钮

如何在 C++/MFC/GDI 中创建一个非常大的位图

在 MFC 中的 groupbox 或图片控件中创建矩形

如何在Visual Studio 2015中创建MFC窗体应用

如何在Visual Studio 2015中创建MFC窗体应用

在 mfc 中创建的工具栏上没有显示文本?