IpcServerChannelは、IPCというプロセス間通信のサーバチャンネルを開くためのクラス・・・。
IpcServerChannel クラス (System.Runtime.Remoting.Channels.Ipc)
IPCサーバとIPCクライアント間でIPCプロセス間通信をしてみる・・・。
今回はWindowsアプリケーションでまずサーバを作る・・・。
参照を追加・・・。
System.Runtime.Remotingが必要・・・。
IpcServerChannel_プロジェクトのForm1.csは、
System.Runtime.Remoting以下をusing・・・。
IpcServerChannelオブジェクトserverをChannelServices.RegisterChannelで登録・・・。
後述するRemoteObjectのremoteObjをRemotingServices.Marshalで公開する流れ・・・。
今回は、server生成時にポート名"ipcserver"、公開時にURI"message"と指定しているので"ipc://ipcserver/message"というURIで公開される・・・。
新しいプロジェクトを追加・・・。
今度はIpcClientChannel_・・・。
こちらにもSystem.Runtime.Remotingの参照を追加しておく・・・。
そして、
clientをChannelServices.RegisterChannelに登録・・・。
サーバもクライアントもテキストボックスとボタンを配置・・・。
IpcClientChannel_では、タイトルをClientに・・・。
IpcServerChannel_では、タイトルをServerに・・・。
あとは、ボタンのハンドラ・・・。
サーバはボタンを押したら、remoteObj.MessageにtextBox1.Textの内容を渡す・・・。
クライアントはActivator.GetObjectに"ipc://ipcserver/message"を指定してremoteObjを取る・・・。
取ったremoteObj.MessageをtextBox1.Textに・・・。
でこのRemoteObjectは、
と、
両方のプロジェクトで定義・・・。
名前空間も共通化して見えるように・・・。
Serverで"ABCDE"と入力して、button1を押す・・・。
Client側は空の状態でbutton1を押すと、
反映される・・・。
Serverで文字列を変えて、button1を押し、
Client側でbutton1を押すと、
また反映される・・・。