private void callBackConfMemberEventCBProcess(ref STConfParam _avParam) { LogManager.SystemLog.Info("callBackConfMemberEventCBProcess Monitor.Enter"); ParameterizedThreadStart para = new ParameterizedThreadStart(StartUpdateCallWin); Thread thread = new Thread(para); thread.Priority = ThreadPriority.Highest; //之前是Highest 2015/8/11 thread.Start(_avParam); }
void StartUpdateCallWin(object avParam) { lock (WinCall.lockObject) { //this.flag1 = false; try { if (contactList != null) //modify by 00327190 2015/8/10 { LogManager.SystemLog.Info("StartUpdateCallWin Monitor.Enter"); STConfParam _avParam = new STConfParam(); _avParam = (STConfParam)avParam; LogManager.SystemLog.Info("Start ConfMemberEventCB"); string str = _avParam.callerAcc_; if (str == "") { if (_avParam.memStatus == (int)MemStatusInCall.CONF_MEM_SPK) { foreach (UCContact uc1 in contactList) { uc1.IsSpeaker = false; } } LogManager.SystemLog.Info("End ConfMemberEventCB1"); return; } else { if (contactList.FindIndex((x) => { return StringHelper.GetSubString(x.UserName) == str; }) == -1) { UCContact uc = new UCContact(); if (_avParam.memType == (int)MemberType.UC_IPPHONE) { uc.UserName = str; } else { uc.UserName = str + StringHelper.GetLyncDomainString(SingletonObj.LoginInfo.LyncName); } uc.Mute = (MemStatusInCall)_avParam.memStatus; uc.UCMemberType = (MemberType)_avParam.memType; uc.Online = GetContactAvailability(_avParam.memType, str); //if 是modify by jinyeqing 之前是没有的 if (_avParam.memStatus != (int)MemStatusInCall.CONF_MEM_DEL) { contactList.Add(uc); } winCall.Render(contactList); //winCall.AddContactWinSize(contactList); LogManager.SystemLog.Info("End ConfMemberEventCB2"); return; } else if (!winCall.IsConf())//修改呼叫三人会议,一人未接,被叫者不是会议状态的bug { winCall.Render(contactList); } } UCContact ucFrist = contactList.First((x) => { return StringHelper.GetSubString(x.UserName) == str; }); if (ucFrist != null) { if ((_avParam.memStatus == (int)MemStatusInCall.CONF_MEM_DEL || _avParam.memStatus == (int)MemStatusInCall.CONF_MEM_QUIT) && contactList.FindIndex((x) => { return x.IsLeader == true && StringHelper.GetSubString(x.UserName) == str; }) != -1) { //临时注释掉 会议主席离会时,关闭会议的处理,只更新状态 //winCall.CloseCallInThread(); ucFrist.Mute = (MemStatusInCall)_avParam.memStatus; return; } switch (_avParam.memStatus) { case (int)MemStatusInCall.CONF_MEM_SPK: foreach (UCContact uc1 in contactList) { uc1.IsSpeaker = false; } ucFrist.IsSpeaker = true; break; //case (int)MemStatusInCall.CONF_MEM_QUIT: case (int)MemStatusInCall.CONF_MEM_DEL: contactList.Remove(ucFrist); winCall.Render(contactList); // winCall.AddContactWinSize(contactList); break; default: ucFrist.Mute = (MemStatusInCall)_avParam.memStatus; break; } } } } finally { LogManager.SystemLog.Info("End ConfMemberEventCB3"); LogManager.SystemLog.Info("StartUpdateCallWin Monitor.Exit"); } //this.flag1 = true; } }