/// <summary> /// 显示等待界面请求 /// </summary> /// <param name="_msg"></param> private void ShowWaiting(Message _msg) { if (!_msg.IsKey("id")) { return; } int nId = _msg["id"] != null ? (int)_msg["id"] : 0; WaitingMsgInfo mInfo = new WaitingMsgInfo(_msg); key_msgs.AddOrReplace(nId, mInfo); SetMax(_msg); m_qMsg.Enqueue(nId); if (!m_bShowWaiting) { UIManager.Instance.OpenUI(UIType.Waiting, false, _msg); m_curMsgKey = nId; LoadWaitingView(); } m_bShowWaiting = true; }
/// <summary> /// 进度总数+1 /// </summary> /// <param name="_msg"></param> private void PushWaiting(Message _msg) { if (_msg.IsKey("id")) { int nId = (int)_msg["id"]; if (!key_msgs.ContainsKey(nId)) { return; } WaitingMsgInfo mInfo = key_msgs[nId]; m_nTotal = mInfo.nTotal; mInfo.nTotal = ++m_nTotal; key_msgs[nId] = mInfo; m_nCurrent = mInfo.nCurrent; if (nId == m_curMsgKey) { if (m_nCurrent >= m_nTotal) { LoadWaitingView(); } else { Message msg = new Message(MsgType.WV_UpdateWaiting, this); msg["t"] = m_nTotal; msg["c"] = m_nCurrent; msg.Send(); } } } }
private void SetMax(Message _msg) { if (_msg.IsKey("id") && _msg.IsKey("t")) { int nId = (int)_msg["id"]; int nTotal = (int)_msg["t"]; if (!key_msgs.ContainsKey(nId)) { return; } WaitingMsgInfo mInfo = key_msgs[nId]; mInfo.nTotal = nTotal; key_msgs[nId] = mInfo; m_nCurrent = mInfo.nCurrent; } }
/// <summary> /// 等待消息队列 /// </summary> private void LoadWaitingView() { if (m_qMsg.Count > 0) { int nKey = (int)m_qMsg.Dequeue(); WaitingMsgInfo mInfo = key_msgs[nKey]; if (mInfo.bFinished) { LoadWaitingView(); } else { Message msg = mInfo.msg; m_curMsgKey = nKey; Message newMsg = new Message(MsgType.WV_NewWaiting, msg); newMsg.Send(); } } else { UIManager.Instance.CloseUI(UIType.Waiting); m_bShowWaiting = false; } }