예제 #1
0
        public IAsyncResult BeginTryReceive(TimeSpan timeout, AsyncCallback callback, object state)
        {
            TryReceiveAsyncResult <TChannel> result = new TryReceiveAsyncResult <TChannel>(this, timeout, callback, state);

            result.Begin();
            return(result);
        }
            public static bool End(IAsyncResult result, out Message message)
            {
                TryReceiveAsyncResult asyncResult = AsyncResult.End <TryReceiveAsyncResult>(result);

                message = asyncResult.Message;
                return(asyncResult.returnValue);
            }
예제 #3
0
            public static bool End(IAsyncResult result, out Message message)
            {
                TryReceiveAsyncResult <TInputChannel> thisPtr = AsyncResult.End <TryReceiveAsyncResult <TInputChannel> >(result);

                message = thisPtr.Message;
                return(thisPtr.returnValue);
            }
예제 #4
0
            public static bool End(IAsyncResult result, out Message message)
            {
                TryReceiveAsyncResult thisPtr = AsyncResult.End <TryReceiveAsyncResult>(result);

                message = thisPtr.message;
                return(thisPtr.receiveSuccess);
            }
예제 #5
0
 public bool EndTryReceive(IAsyncResult result, out Message message)
 {
     try
     {
         return(TryReceiveAsyncResult.End(result, out message));
     }
     catch (TimeoutException)
     {
         message = null;
         return(false);
     }
 }
 public static bool End(IAsyncResult result, out Message message)
 {
     try
     {
         TryReceiveAsyncResult thisPtr = AsyncResult.End <TryReceiveAsyncResult>(result);
         message = thisPtr.message;
         return(thisPtr.receiveSuccess);
     }
     catch (CommunicationException)
     {
         message = null;
         return(false);
     }
 }
예제 #7
0
            unsafe static void OnPortedCompletion(uint error, uint numBytes, NativeOverlapped *nativeOverlapped)
            {
                Overlapped            overlapped = Overlapped.Unpack(nativeOverlapped);
                TryReceiveAsyncResult result     = (TryReceiveAsyncResult)overlapped.AsyncResult;

                if (error != 0)
                {
                    error = (uint)UnsafeNativeMethods.MQGetOverlappedResult(nativeOverlapped);
                }
                Overlapped.Free(nativeOverlapped);
                result.nativeOverlapped = null;
#pragma warning suppress 56508 // Suppression justified. Presharp warning concerns different scenario.
                GC.SuppressFinalize(result);
                result.OnCompletion((int)error, false);
            }
            static void OnReceive(IAsyncResult result)
            {
                if (result.CompletedSynchronously)
                {
                    return;
                }

                TryReceiveAsyncResult thisPtr             = (TryReceiveAsyncResult)result.AsyncState;
                Exception             completionException = null;

                try
                {
                    thisPtr.CompleteReceive(result);
                }
                catch (TimeoutException)
                {
                }
                catch (Exception e)
                {
                    completionException = e;
                }

                thisPtr.Complete(false, completionException);
            }
예제 #9
0
            static void OnReceive(IAsyncResult result)
            {
                if (result.CompletedSynchronously)
                {
                    return;
                }

                TryReceiveAsyncResult thisPtr             = (TryReceiveAsyncResult)result.AsyncState;
                Exception             completionException = null;

                try
                {
                    thisPtr.CompleteReceive(result);
                }
                catch (TimeoutException e)
                {
                    if (TD.ReceiveTimeoutIsEnabled())
                    {
                        TD.ReceiveTimeout(e.Message);
                    }

                    DiagnosticUtility.TraceHandledException(e, TraceEventType.Information);
                }
#pragma warning suppress 56500 // [....], transferring exception to another thread
                catch (Exception e)
                {
                    if (Fx.IsFatal(e))
                    {
                        throw;
                    }

                    completionException = e;
                }

                thisPtr.Complete(false, completionException);
            }
예제 #10
0
 public bool EndTryReceive(IAsyncResult result, out Message message)
 {
     return(TryReceiveAsyncResult <TChannel> .End(result, out message));
 }
 public ReceiveResult EndTryReceive(IAsyncResult result)
 {
     return(TryReceiveAsyncResult.End(result));
 }
예제 #12
0
            public static ReceiveResult End(IAsyncResult result)
            {
                TryReceiveAsyncResult thisPtr = AsyncResult.End <TryReceiveAsyncResult>(result);

                return(thisPtr.receiveResult);
            }