2011-05-02 80 views
4

有沒有什麼辦法可以在同一個進程中與C++的c#代碼異步通信?在同一個應用程序中的C++和c#之間的異步通信

我的意思是我必須在同一個基於WindowsCE的應用程序中混合託管c#和非託管C++(使用pInvoke)。 c#部分是應用程序的核心。代碼的C++部分有一個線程來偵聽事件,並且當事件被攔截時,我想有一種方法可以與c#部分通信,以觸發事件。

目前我認爲事件是C++和c#之間通信的方式,但是有可能嗎?

有沒有辦法異步做這種溝通?

感謝,

回答

1

C#和C之間進行異步通信++是一個C#兩個部分之間進行異步通信沒有區別以應用爲你剛剛結束了在那是最終,C#的delegate類型會變成調用不同的功能在.NET JIT的C++端提供函數指針。這被稱爲反向P/Invoke,並允許非託管C++調用.NET代碼。

0

通常的做法是使用代表託管代碼中的代表回調和非託管代碼中的函數指針。這裏有一個MSDN文章概述了辦法:

How to: Pass a Delegate^ to a Native Function Expecting a Function Pointer

+0

這聽起來像C++ CLI,我認爲在Windows CE – 2011-05-03 09:31:25

+0

@Alina達尼拉不支持:正在演示的代碼是C++/CLI,但封送處理的概念委託給一個本地函數指針是語言不可知的,並且只是C#中的一個輕微的語法差異。 – ildjarn 2011-05-03 09:33:21

相關問題