コード例 #1
0
        public void SubmitBatchAndWait(IBatchRequest batch, bool urgent)
        {
            int completed = 0;
            Dictionary <IRequest, BaseRequest.RequestCompletedCallback> callbacks = new Dictionary <IRequest, BaseRequest.RequestCompletedCallback>();
            ManualResetEvent mre = new ManualResetEvent(false);

            foreach (IRequest req in batch.Requests)
            {
                BaseRequest.RequestCompletedCallback _callback = req.RequestCompleteCallback;
                callbacks.Add(req, _callback);

                req.RequestCompleteCallback = delegate(IRequest r)
                {
                    completed++;
                    callbacks[r](r);
                    if (completed >= batch.Requests.Count)
                    {
                        mre.Set();
                    }
                };

                SubmitRequest(req, false);
            }
            mre.WaitOne();
        }
コード例 #2
0
        /// <summary>
        /// Submits the specified request and then blocks the calling thread until it completes.
        /// </summary>
        /// <param name="req"></param>
        /// <param name="urgent"></param>
        public void SubmitAndWait(IRequest req, bool urgent)
        {
            BaseRequest.RequestCompletedCallback _callback = req.RequestCompleteCallback;

            bool requestComplete = false;

            req.RequestCompleteCallback = delegate(IRequest r)
            {
                requestComplete = true;
            };
            SubmitRequest(req, urgent);
            while (!requestComplete)
            {
                Thread.Sleep(1);
            }
            if (_callback != null)
            {
                _callback(req);
            }
        }