本文是根据一步一步学Remoting之六:事件(1),这篇文章进行学习得到的经验,原文章地址:http://www.cnblogs.com/lovecherry/archive/2005/05/23/160778.html,当然附上调试源码:一步一步学Remoting之六:事件(1)

  该篇文章使用的是在程序中进行注册通道,而非前几章的在app.config中注册通道。相对而言,确实在app.config中很简介易懂,而且在今后维护的时候,容易修改,非常方便。

值得注意的是在本文中,要想获得在远程触发本地事件,得到本地的程序集,需要在MyObject类库中声明一个事件中间键。该中间键继承于MarshalByRefObject类(msdn解释为:允许在支持远程处理的应用程序中跨应用程序域边界访问对象)。

代码

  1. public class EventClass:MarshalByRefObject 
  2. public void MyEvent(object sender,MyEventArgs e) 
  3. Console.WriteLine("来自"+e.IP+"的异步方法完成了"+e.Rate*10+"%"); 
  4. }  

  本文中注册通道的时候还可能会发生找不到System.Runtime.Remoting.Channels.Tcp引用的情况。在这种情况 下,针对客户端以及服务器端的解决方案管理器“引用”右键,“添加引用”,在“.net”选项卡中找到 “System.Runtime.Remoting”,然后“确定”即可。