- - PR -
IPC チャネルを使用したプロセス間通信について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-03-10 19:11
こんにちは。
いつもお世話になっております。 Windows アプリケーションで IPC チャネルを使用したプロセス間通信を実装しようとしています。 (以下のサイトなどを参考にしました。) http://d.hatena.ne.jp/PoohKid/20071226/ipc http://d.hatena.ne.jp/tetsuarossa/20070325/p1 http://tryhost.net/~catwalk/?diary%2F2007%2F07%2F04 以下のようなコード(サーバー、クライアント、IPC オブジェクト)を記述したのですが、 クライアントで IPCData オブジェクトの Status プロパティが「1」になりません。
私の認識では、IPC チャネルを使用したプロセス間通信とは、サーバー、クライアントで設定した値を それぞれで共有できるというものなのですが、そもそもそれが間違っているのでしょうか? それとも記述の方法が間違っているのでしょうか? ご存知の方が見えましたらご教示下さい。 <環境> Windows XP, .NET Framework 2.0, Visual Studio 2005, C#, VB [ メッセージ編集済み 編集者: ani 編集日時 2008-03-11 09:12 ] | ||||||||||||
|
投稿日時: 2008-03-11 00:02
クライアント側は何をやっているのか分かりません。
・サーバーと同期を取るオブジェクトは、挙げられたサイトいずれもActivator.GetObjectで取得していますが、そのコードがありません。 ・IPCClientというクラスは何者ですか? ・サーバとクライアント共に"同じ型"が必要です。C#とVBでそれぞれで型を定義した場合は別の型になります。 (同じアセンブリの同じ型をサーバー・クライアント共に使える状態にしなければならない) MSDNにもサンプルらしいのがあるようですが、動作確認はしていません。 http://msdn2.microsoft.com/ja-jp/library/xcs3s8f3(VS.80).aspx | ||||||||||||
|
投稿日時: 2008-03-11 09:25
Azuleanさん、レスありがとうございます。
クライアント側では1秒間隔のスレッドタイマーで Status を出力する処理をしています。 今回のプロセス間通信とは直接関係はありません。 紛らわしいコードを記述して申し訳ありません。
すみません。一つ参考サイトが抜けていました。 http://msdn2.microsoft.com/ja-jp/library/system.runtime.remoting.channels.ipc.ipcclientchannel(VS.80).aspx MSDN の IpcClientChannel クラスを使用するコード例を参考に記述しました。( C# ) 確かに最初に挙げたサイトでは Activator.GetObject を使用していますね。 MSDN の記述は違う用途で使用するものなのでしょうか?
IPCClient は IPCData の間違いでした。(修正しました。) | ||||||||||||
|
投稿日時: 2008-03-11 11:26
解決しました。
どうやらこの認識が誤っているようです。 サーバーはクライアント同士のメッセージ要求を処理するために立てるのですね。 というわけで、クライアント2を追加した以下のコードを記述しました。
サーバー、クライアント2、クライアント1の順で起動すると、 Status プロパティが「1」として表示されました。 どうもお騒がせしました。 |
1