分享WCF聊天程序--WCFChat实现代码

2019-12-30 11:02:31于海丽
  • {  case MessageType.Receive: 
  • callback.Receive(e.name, e.message);  break; 
  • case MessageType.ReceiveWhisper:  callback.ReceiveWhisper(e.name, e.message); 
  • break;  case MessageType.UserEnter: 
  • callback.UserEnter(e.name);  break; 
  • case MessageType.UserLeave:  callback.UserLeave(e.name); 
  • break;  } 
  • }  catch 
  • {  Leave(); 
  • }  } 
  •   private void BroadcastMessage(ChatEventArgs e) 
  • {   
  • ChatEventHandler temp = ChatEvent;   
  • if (temp != null)  { 
  • //循环将在线的用户广播信息  foreach (ChatEventHandler handler in temp.GetInvocationList()) 
  • {  //异步方式调用多路广播委托的调用列表中的ChatEventHandler  
  • handler.BeginInvoke(this, e, new AsyncCallback(EndAsync), null);  } 
  • }  } 
  • //广播中线程调用完成的回调方法功能:清除异常多路广播委托的调用列表中异常对象(空对象)  private void EndAsync(IAsyncResult ar) 
  • {  ChatEventHandler d = null; 
  •   try 
  • {  //封装异步委托上的异步操作结果 
  • System.Runtime.Remoting.Messaging.AsyncResult asres = (System.Runtime.Remoting.Messaging.AsyncResult)ar;  d = ((ChatEventHandler)asres.AsyncDelegate); 
  • d.EndInvoke(ar);  } 
  • catch  { 
  • ChatEvent -= d;  } 
  • }  }