创建在MFC中的WaitForSingle / MultipleObject中使用的C#句柄

时间:2014-01-08 15:15:07

标签: c# mfc pinvoke

我有一个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#中的事件?

1 个答案:

答案 0 :(得分:4)

与CreateEvent()调用完全等效的是C#代码中的ManualResetEvent。将其Handle属性传递给您的本机代码。

与WaitForSingleObject()调用完全等效的是C#中的ManualResetEvent.WaitOne(int)。如果超时到期,它将返回 false