/// <summary> /// /// </summary> private void DoMainLogic() { _lblWait.BringToFront(); ((Action)(delegate() { UserManager userManager = UserManager.GetInstance(); WXService wxs = WXService.GetWXService(); _me = userManager.GetCurrentUser(); _contact_latest.AddRange(userManager.GetRecentFriend()); List <object> contact_all = userManager.GetAllFriend(); IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin); WXUser wx; string start_char; foreach (object o in list_all) { wx = o as WXUser; start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1); if (!_contact_all.Contains(start_char.ToUpper())) { _contact_all.Add(start_char.ToUpper()); } _contact_all.Add(o); } this.BeginInvoke((Action)(delegate() //等待结束 { _lblWait.Visible = false; wChatList1.Items.AddRange(_contact_latest.ToArray()); //近期联系人 wFriendsList1.Items.AddRange(_contact_all.ToArray()); //通讯录 wpersonalinfo.FriendUser = _me; })); string sync_flag = ""; JObject sync_result; while (true) { sync_flag = wxs.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = wxs.WxSync(); //进行同步 if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { string from = m["FromUserName"].ToString(); string to = m["ToUserName"].ToString(); string content = m["Content"].ToString(); string type = m["MsgType"].ToString(); WXMsg msg = new WXMsg(); msg.From = from; msg.Msg = content; //只接受文本消息 msg.Readed = false; msg.Time = DateTime.Now; msg.To = to; msg.Type = int.Parse(type); MessageServer.GetInstance().notifyMessage(msg); } } } } System.Threading.Thread.Sleep(10); } })).BeginInvoke(null, null); }