コード例 #1
0
 private static void TimerCallback(object state)
 {
     DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult duplexCorrelationAsyncResult = (DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult)state;
     if (duplexCorrelationAsyncResult.parent.inflightRequests.TryRemove(duplexCorrelationAsyncResult.RequestMessageId, out duplexCorrelationAsyncResult))
     {
         string   timeoutOnRequest = Resources.TimeoutOnRequest;
         object[] originalTimeout  = new object[] { duplexCorrelationAsyncResult.OriginalTimeout };
         string   str = SRClient.TrackableExceptionMessageFormat(Microsoft.ServiceBus.SR.GetString(timeoutOnRequest, originalTimeout), duplexCorrelationAsyncResult.CreateClientTrackingExceptionInfo());
         MessagingClientEtwProvider.TraceClient(() => MessagingClientEtwProvider.Provider.EventWriteLogOperationWarning("DuplexMessageCorrelation.TimerCallback", string.Format(CultureInfo.InvariantCulture, "In IO Thread Time callback , removing Request with Message Id:{0} and terminating the request with error: {1}", new object[] { duplexCorrelationAsyncResult.RequestMessageId.ToString(), str })));
         duplexCorrelationAsyncResult.TryComplete(false, new TimeoutException(str));
     }
 }
コード例 #2
0
 private void CancelPendingOperations(bool isFaulted)
 {
     this.CancelPing();
     if (Interlocked.Exchange(ref this.interlockedSync, 1) == 0)
     {
         foreach (DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult value in this.inflightRequests.Values)
         {
             DuplexRequestBindingElement.DuplexRequestSessionChannel.DuplexCorrelationAsyncResult duplexCorrelationAsyncResult = value;
             string    str = SRClient.TrackableExceptionMessageFormat(SRClient.ServerDidNotReply, duplexCorrelationAsyncResult.CreateClientTrackingExceptionInfo());
             Exception communicationObjectAbortedException = new CommunicationObjectAbortedException(str);
             if (isFaulted)
             {
                 communicationObjectAbortedException = new CommunicationObjectFaultedException(str);
             }
             ActionItem.Schedule((object s) => duplexCorrelationAsyncResult.TryComplete(false, communicationObjectAbortedException), null);
         }
         this.inflightRequests.Clear();
     }
 }