internal void postResponses() { sbyte recvNum = 0; IList<AsyncTask> respList = null; if (_responseQueue.Count > 0 && _postNumOnce > 0) { respList = new Deque<AsyncTask>(); Monitor.Enter(_responseQueue); //++ while (_responseQueue.Count > 0 && recvNum < _postNumOnce) { respList.Add(_responseQueue[0]); _responseQueue.RemoveAt(0); ++recvNum; } Monitor.Exit(_responseQueue); //-- } if (respList != null) { AsyncTask task = null; for (int i = 0; i < respList.Count; ++i) { task = respList[i]; Debug.Assert(task != null && task.onCompleteTask != null); task.onCompleteTask(task, task.errorCode, task.resultDict); task.resultDict = null; } } }