从C++ DLL中触发C#中的事件

Ach*_*pta 6 c# c++ pinvoke events

我有一个与Cisco服务器(UCCX)通信的非托管C++ DLL.

它通过TCP/IP向该服务器发送消息和从该服务器接收消息.现在它收到了一些类型的消息,其中包含一些需要发送到C#GUI的参数,这些参数将在屏幕上显示这些参数.

请告诉我一个有效的方法来从这个DLL中触发C#中的事件.

Cra*_*sta 8

http://blogs.msdn.com/b/davidnotario/archive/2006/01/13/512436.aspx似乎回答了你的问题.您在C#端使用委托,在C++端使用标准回调.

C++方面:

typedef void (__stdcall *PFN_MYCALLBACK)();
int __stdcall MyUnmanagedApi(PFN_ MYCALLBACK callback);
Run Code Online (Sandbox Code Playgroud)

C#方面

public delegate void MyCallback();
[DllImport("MYDLL.DLL")] public static extern void MyUnmanagedApi(MyCallback callback);

public static void Main()
{
  MyUnmanagedApi(
    delegate()
    {
      Console.WriteLine("Called back by unmanaged side");
    }
   );
}
Run Code Online (Sandbox Code Playgroud)