有没有什么方法可以在同一个过程中与c ++中的c#代码异步通信?
我的意思是我必须在同一个基于WindowsCE的应用程序中混合使用托管c#和非托管c ++(使用pInvoke)。 c#部分是应用程序的核心。代码的c ++部分有一个侦听事件的线程,当一个事件被截获时,我希望有一种方法可以与触发事件的c#部分进行通信。
目前我认为事件是c ++和c#之间通信的方式,但它有可能吗?
有没有办法异步进行这种通信?
感谢,
答案 0 :(得分:1)
在C#和C ++之间异步通信与在C#应用程序的两个部分之间异步通信没什么不同 - 你最终最终会调用另一个函数 - 也就是说,C#的delegate
类型将变成函数指针在.NET JIT的C ++结束时。这称为反向P / Invoke,允许非托管C ++调用.NET代码。
答案 1 :(得分:0)
通常的方法是在托管代码中使用表示为委托的回调,在非托管代码中使用函数指针。这是一篇MSDN文章,概述了这种方法:
How to: Pass a Delegate^ to a Native Function Expecting a Function Pointer