private void SynchronousReceive(object state) { try { while (!_cancellation.IsCancellationRequested) { IMessage rawMessage = UpLinkMessenger.Receive(); MessageBase message = rawMessage as MessageBase; if (null != message) { if (message.Type == MessageType.Status) { _statusMessageQueue.Enqueue(message); } else if (message.Type == MessageType.CallBack) { _callBackMessageQueue.Enqueue(message); } else { _engineMessageQueue.Enqueue(message); } GlobalInfo.LogService.Print(LogLevel.Debug, CommonConst.PlatformLogSession, $"Message received, Type:{message.Type}, Index:{message.Index}."); } else { GlobalInfo.LogService.Print(LogLevel.Warn, CommonConst.PlatformSession, $"Unexpected message received. Type:{rawMessage.GetType().Name}, id:{rawMessage.Id}"); } } } catch (ThreadAbortException) { GlobalInfo.LogService.Print(LogLevel.Warn, CommonConst.PlatformLogSession, $"thread {Thread.CurrentThread.Name} is stopped abnormally"); } catch (Exception ex) { // 只有在因为非用户操作的情况下停止才执行停止操作 this.Stop(); GlobalInfo.EventQueue.Enqueue(new ExceptionEventInfo(ex)); GlobalInfo.LogService.Print(LogLevel.Fatal, CommonConst.PlatformLogSession, ex); } finally { GlobalInfo.LogService.Print(LogLevel.Info, CommonConst.PlatformLogSession, $"thread {Thread.CurrentThread.Name} is Stopped."); } }
private void PeakMessage() { try { while (!_cancellation.IsCancellationRequested) { IMessage message = _downLinkMessenger.Peak(); _messageQueue.Enqueue((MessageBase)message); } } catch (ThreadAbortException) { _slaveContext.LogSession.Print(LogLevel.Warn, CommonConst.PlatformLogSession, "Transceiver peak thread aborted"); } }