// 定义私有构造函数,使外界不能创建该类实例 private UserManager() { Service = WXService.GetWXService(); JObject initResult = Service.GetInitInfo(); //初始化 init(initResult); }
/// <summary> /// 向该用户发送消息 /// </summary> /// <param name="msg"></param> public void SendMsg(WXMsg msg, bool showOnly) { //发送 if (!showOnly) { WXService wxs = WXService.GetWXService(); wxs.SendMsg(msg.Msg, msg.From, msg.To, msg.Type); } _sentMsg.Add(msg.Time, msg); if (MsgSent != null) { MsgSent(msg); } }
/// <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); }
/// <summary> /// 向发送者发送文本消息 /// </summary> /// <param name="message">文本</param> private void SendText(string message) { WXService.GetWXService().SendMsg(message, UserManager.GetInstance().GetCurrentUser().UserName, RealSendTo(), 1); }