2016-07-22 4 views
0

新しいデータが利用可能なときは常に、クライアントがサーバーからデータを受信するMFCアプリケーションのセットアップがあります。クライアントはC#で書き換えられていますが、サーバー部分との通信はMFCにあります。 MFCに関連付けられたクラスにC++/CLIラッパーを作成し、アプリケーションの初期化時にデータを受け取ることができます。通信エンジンは依然としてMFC内にあり、データ項目に対してのみラッパークラスを作成しています。 CLIラッパーを初期化するとき、MFC配列からCLI配列にデータをコピーします。しかし、受け取ったデータをどのように取得するのかは分かりませんが、5秒後に言うことができます。新しいデータがバックグラウンドで実行されているMFCコードによって受信されたことをC++/CLIラッパーに通知する方法説明が必要な場合はお知らせください。ありがとう。イベント/代理人/コールバックを使用してMFCからC++/CLIにデータを移動/コピーする方法

または C++コードからC++/CLIメソッドを呼び出す方法はありますか?

注: は、vC++とC++/CLIコードを持つ混合モードのコンパイルです。

編集::

コールバック・ソリューションのための追加要求下記ハンスで述べたように。

+0

[IPC](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574(v = vs.85).aspx)構成のいずれかを調べましたか? – rrirower

+0

ありがとう@rrirowerこのリンクは有望ですhttps://msdn.microsoft.com/en-us/library/windows/desktop/ms649009(v=vs.85).aspx、しかし、彼らは読み込む宛先クラスを実装していませんデータ。あなたは宛先クラスの実装で良い例に私を導いてください。 – bhardwajhp

+0

通常、gcroot <>を使用して、MFCコードで管理対象オブジェクトへの参照を保持させます。それが障害であるなら、コールバックはここでは論理的なショートカットです.Mhalf :: GetFunctionPointerForDelegate()を使用してMFCコードに関数ポインタを渡すことができます。 –

答えて

0

CPPイベントを.NETデリゲートとして.NETによって認識されるCLIデリゲートに変換することで、この問題を解決しました。

このようにして、CPPからC#endのアクションを制御できます。誰かがより良い解決策を持っている場合は、共有してください。

関連する問題