4

あるアプリケーションから別のアプリケーションに (C# で) オブジェクトを転送することは可能ですか?

私はCAD APIを使用しています。その API の初期化には数秒 (10 ~ 15) かかります。オブジェクトを App1 で 1 回だけ初期化し、必要なときにいつでも App2 から呼び出せたらいいのにと思います。

何か案は?ありがとう!

4

3 に答える 3

6

これを行うには、オブジェクトをシリアル化し、任意の形式のプロセス間通信を使用してデータを送信し、もう一方の端でデータを逆シリアル化します。

Windows Communication Foundationは、このタイプのシナリオに特に適しており、ほとんどの配管を処理します。

于 2010-04-07T21:05:32.267 に答える
1

Reed の提案は完全に優れたものですが、検討する価値のある唯一の可能性ではないかもしれません。10 ~ 15 秒の初期化はかなり長い時間です。かなり大規模で複雑なデータ構造を初期化している可能性があり、シリアライズとデシリアライズにかなりの時間がかかる可能性があります。その場合は、CAD API のフロントエンドとして機能するアウトプロセス COM (または DCOM) サーバーを作成し、App1 と App2 の両方がそのサーバーで動作するようにするなど、別の可能性を検討する価値があるかもしれません。一箇所。これは、CAD API との間で送受信するすべてのデータをマーシャリングおよびアンマーシャリングすることを意味しますが、関連するデータの量と (特に) App1 と App2 で使用されているデータから切り替える必要がある頻度に応じて、まだオーバーヘッドが低い可能性があります。

于 2010-04-07T21:33:21.830 に答える
1

私の見解では、さらに単純な可能性は、共有メモリを使用することです。これは、Windows でのプロセス間通信の一般的なメカニズムです。リンクされたCodeProjectの記事を参照してください。

于 2010-04-07T23:47:13.303 に答える