/// <summary> /// 私聊消息处理 /// </summary> /// <param name="type"></param> /// <param name="source"></param> /// <param name="content"></param> private static void SingleMessage(string type, string source, string content) { lock (countersLock) { if (MainWindow.mw.messageList.Items.IndexOf(source) == 0) //若来源客户端的聊天项已存在 { //对象的未读消息+1 messageCounters[source] += 1; MainWindow.mw.ItemCountAdd(source, messageCounters[source]); } else { messageCounters.Add(source, 1); MainWindow.mw.NewItemAdd(source); } } //将消息加入页面类对象中的消息队列 asdasdasd.Receive receive = new asdasdasd.Receive(); receive.Type = type; if (type.Equals("Text")) //判断消息类型,如果是Text则直接保存入Receive结构中 { receive.Content = content; receive.Source = source; } else //如果消息不是Text,则将其保存在本地硬盘中,并将其地址存入Receive结构 { receive.Content = SaveToLocal(content, type); } MainWindow.mw.navigateTableUpdate(receive, source); }
/// <summary> /// 在主线程同步页面导航表的数据 /// </summary> /// <param name="receive"></param> /// <param name="source"></param> public void navigateTableUpdate(asdasdasd.Receive receive, string source) { mw.Dispatcher.Invoke(() => { if (navigateTable.ContainsKey(source)) { navigateTable[source].Add(receive); } else { List <asdasdasd.Receive> li = new List <asdasdasd.Receive>(); li.Add(receive); navigateTable.Add(source, li); } }); }
/// <summary> /// 群组消息处理 /// </summary> /// <param name="type"></param> /// <param name="source"></param> /// <param name="content"></param> /// <param name="target"></param> private static void GroupMessage(string type, string source, string content, string target) { //对象群组的未读消息+1 lock (countersLock) { messageCounters[target] += 1; } MainWindow.mw.ItemCountAdd(target, messageCounters[target]); //新消息内容封装入链表 asdasdasd.Receive r = new asdasdasd.Receive(); r.Source = source; if (type.Equals("Text")) { r.Content = content; } else { r.Content = SaveToLocal(content, type); } r.Type = type; MainWindow.mw.navigateTableUpdate(r, target); }