private static void OnComplete(object parameter)
                {
                    MsmqInputSessionChannel.MsmqSessionReceiveContext.SessionReceiveContextAsyncResult result = parameter as MsmqInputSessionChannel.MsmqSessionReceiveContext.SessionReceiveContextAsyncResult;
                    Transaction current = Transaction.Current;

                    Transaction.Current = result.completionTransaction;
                    try
                    {
                        Exception exception = null;
                        try
                        {
                            result.receiveContext.OnComplete(result.timeoutHelper.RemainingTime());
                        }
                        catch (Exception exception2)
                        {
                            if (Fx.IsFatal(exception2))
                            {
                                throw;
                            }
                            exception = exception2;
                        }
                        result.Complete(false, exception);
                    }
                    finally
                    {
                        Transaction.Current = current;
                    }
                }
                private static void OnAbandon(object parameter)
                {
                    MsmqInputSessionChannel.MsmqSessionReceiveContext.SessionReceiveContextAsyncResult result = parameter as MsmqInputSessionChannel.MsmqSessionReceiveContext.SessionReceiveContextAsyncResult;
                    Exception exception = null;

                    try
                    {
                        result.receiveContext.OnAbandon(result.timeoutHelper.RemainingTime());
                    }
                    catch (Exception exception2)
                    {
                        if (Fx.IsFatal(exception2))
                        {
                            throw;
                        }
                        exception = exception2;
                    }
                    result.Complete(false, exception);
                }