所以我有了我的 c# WinForm应用程序,从它我调用我的 c++ CLI MFC dll库。
但是在我的c++库中有一些事件,即使这些事件发生在这个库的本机(非cli)部分。我需要从我的c#应用程序中调用一些代码并在这个事件中获取一些数据。
所以当这个本地函数从客户端调用时:
bool __stdcall ClassName::WorkQuery()
{
......
switch(pp->code)
{
case READCOMPLEX:
..........
我需要把数据从c# ,所以我需要注册这个事件的某种方式
所以问题是你需要运行c#代码响应MFC事件(或c++回调),对吧?
为什么你不能直接注册一个本地处理程序到本地事件/回调,然后调用一个。net事件,它可以从c#中消费。
你可以从c++/CLI事件句柄中创建一个。net事件,然后本地使用它。只需使用EventWaitHandle或派生的AutoResetEvent和ManualResetEvent。