public RemoteObject remoteObj; // 共有するRemoteObject型remoteObj. // コンストラクタ public Form1() { InitializeComponent(); // IPCサーバーチャンネルを作成. IpcServerChannel server = new IpcServerChannel("ipcserver"); // ポート名が"ipcserver"なIpcServerChannelオブジェクトserverを生成. // チャンネルを登録. ChannelServices.RegisterChannel(server, true); // ChannelServices.RegisterChannelでチャンネルserverを登録. // リモートオブジェクトの作成. remoteObj = new RemoteObject(); // RemoteObjectオブジェクトを生成し, remoteObjに格納. // リモートオブジェクトの公開. RemotingServices.Marshal(remoteObj, "message", typeof(RemoteObject)); // RemotingServices.MarshalでremoteObjを公開.("ipc://ipcserver/message"というURIで公開される.) }
// button1がクリックされた時. private void button1_Click(object sender, EventArgs e) { // リモートオブジェクトからテキストを取得. remoteObj = (RemoteObject)Activator.GetObject(typeof(RemoteObject), "ipc://ipcserver/message"); // Activator.GetObjectで取得してRemoteObjectにキャストしてremoteObjに格納. textBox1.Text = remoteObj.Message; // textBox1.TextにremoteObj.Messageを格納. }