我有一个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#中的事件?
答案 0 :(得分:4)
与CreateEvent()调用完全等效的是C#代码中的ManualResetEvent
。将其Handle属性传递给您的本机代码。
与WaitForSingleObject()调用完全等效的是C#中的ManualResetEvent.WaitOne(int)。如果超时到期,它将返回 false 。