コード例 #1
0
        private static void OnTimerCallback(object state)
        {
            AsyncWaiter asyncWaiter = (AsyncWaiter)state;

            asyncWaiter.timerCallbackCalled = true;
            if (Interlocked.CompareExchange(ref asyncWaiter.waitResult, 1, 0) == 0)
            {
                asyncWaiter.Complete(false);
            }
        }
コード例 #2
0
        private IAsyncResult BeginWaitPendingOperation(TKey key, TimeSpan timeout, AsyncCallback callback, object state)
        {
            List <AsyncWaiter> asyncWaiters;

            if (!this.pendingOperations.TryGetValue(key, out asyncWaiters))
            {
                asyncWaiters = new List <AsyncWaiter>();
                this.pendingOperations.Add(key, asyncWaiters);
            }
            AsyncWaiter asyncWaiter = new AsyncWaiter(timeout, callback, state);

            asyncWaiters.Add(asyncWaiter);
            return(asyncWaiter);
        }
コード例 #3
0
        private static IAsyncResult BeginWaitPendingOperation(int key, TimeSpan timeout, AsyncCallback callback, object state)
        {
            List <AsyncWaiter> asyncWaiters;

            if (!Microsoft.ServiceBus.Messaging.NetworkDetector.pendingOperations.TryGetValue(key, out asyncWaiters))
            {
                asyncWaiters = new List <AsyncWaiter>();
                Microsoft.ServiceBus.Messaging.NetworkDetector.pendingOperations.Add(key, asyncWaiters);
            }
            AsyncWaiter asyncWaiter = new AsyncWaiter(timeout, callback, state);

            asyncWaiters.Add(asyncWaiter);
            return(asyncWaiter);
        }
コード例 #4
0
 private void EndWaitPendingOperation(IAsyncResult result)
 {
     AsyncWaiter.End(result);
 }