private void TransmitThread()
 {
     MrsTracer.ActivityID = this.traceActivityID;
     SettingsContextBase.RunOperationInContext(this.configContexts, delegate
     {
         for (;;)
         {
             CommonUtils.SafeWait(this.eventWakeUpTransmitter, this.mainThread);
             if (this.quitting)
             {
                 break;
             }
             CommonUtils.CatchKnownExceptions(delegate
             {
                 AsynchronousTransmitter.AsyncTransmitterWaitForReplyMessage asyncTransmitterWaitForReplyMessage = this.currentMessage as AsynchronousTransmitter.AsyncTransmitterWaitForReplyMessage;
                 if (asyncTransmitterWaitForReplyMessage != null)
                 {
                     this.replyMessage = base.WrappedObject.SendMessageAndWaitForReply(asyncTransmitterWaitForReplyMessage.Request);
                     return;
                 }
                 base.WrappedObject.SendMessage(this.currentMessage);
             }, delegate(Exception failure)
             {
                 failure.PreserveExceptionStack();
                 this.lastFailure = failure;
             });
             this.currentMessage = null;
             this.eventWakeUpTransmitter.Reset();
             this.eventBufferIsAvailableToAccept.Set();
         }
     });
 }
Beispiel #2
0
        private void ExportThread(object context)
        {
            MrsTracer.ActivityID = this.traceActivityID;
            Action exportOperation = (Action)context;

            CommonUtils.CatchKnownExceptions(delegate
            {
                this.WaitForTheNextCall();
                SettingsContextBase.RunOperationInContext(this.configContexts, exportOperation);
                this.exportFailure = null;
            }, delegate(Exception ex)
            {
                ex.PreserveExceptionStack();
                this.exportFailure = ex;
            });
            this.result = DataExport.DataExportResult.Done;
            this.eventDataAvailable.Set();
        }