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

2019-12-30 11:02:31于海丽
  • e.name = name;  BroadcastMessage(e); 
  • ChatEvent += myEventHandler;  string[] list = new string[chatters.Count]; //以下代码返回当前进入聊天室成员的称列表 
  • lock (syncObj)  { 
  • chatters.Keys.CopyTo(list, 0);//将字典中记录的用户信息复制到数组中返回。  } 
  • return list;  } 
  • else  { 
  • return null;  } 
  • }   
  • public void Say(string msg)  { 
  • ChatEventArgs e = new ChatEventArgs();  e.msgType = MessageType.Receive; 
  • e.name = this.name;  e.message = msg; 
  • BroadcastMessage(e);  } 
  •   public void Whisper(string to, string msg) 
  • {  ChatEventArgs e = new ChatEventArgs(); 
  • e.msgType = MessageType.ReceiveWhisper;  e.name = this.name; 
  • e.message = msg;  try 
  • {  ChatEventHandler chatterTo;//创建一个临时委托实例 
  • lock (syncObj)  { 
  • chatterTo = chatters[to]; //查找成员字典中,找到要接收者的委托调用  } 
  • chatterTo.BeginInvoke(this, e, new AsyncCallback(EndAsync), null);//异步方式调用接收者的委托调用  } 
  • catch (KeyNotFoundException)  { 
  • }  } 
  •   public void Leave() 
  • {  if (this.name == null) 
  • return;   
  • lock (syncObj)  { 
  • chatters.Remove(this.name);  } 
  • ChatEvent -= myEventHandler;  ChatEventArgs e = new ChatEventArgs(); 
  • e.msgType = MessageType.UserLeave;  e.name = this.name; 
  • this.name = null;  BroadcastMessage(e); 
  • }   
  • //回调,根据客户端动作通知对应客户端执行对应的操作  private void MyEventHandler(object sender, ChatEventArgs e) 
  • {  try 
  • {  switch (e.msgType)