コード例 #1
0
        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;
                }
            }
        }