private void Worker_ChangedState(object sender, ChangedStateEventArgs e) { SerialPortWorkerState workerState = e.WorkerState; Helper.NLogger.Debug($"Sender: {sender}, has sent state {workerState}"); SerialPortWorker worker = sender as SerialPortWorker; if (worker != null) { SPClass workerClass = worker.SP_CLASS_TYPE; switch (workerState) { case SerialPortWorkerState.STARTED: break; case SerialPortWorkerState.PAUSED: break; case SerialPortWorkerState.STOPPED: RemoveWorkerFromCollection(workerClass); break; default: break; } } }
private void SendMessageToWorker(SPClass serialPortClassWhichMessageHasBeenSentTo, string message) { if (serialPortWorkers.TryGetValue(serialPortClassWhichMessageHasBeenSentTo, out SerialPortWorker worker)) { SerialPortWorkerState currentWorkerState = worker.CurrentState; Helper.NLogger.Debug($"Próba wysłania wiadomości: {message} do workera: {worker} ({worker})"); Helper.NLogger.Debug($"Worker jest w trybie: {currentWorkerState}"); if (currentWorkerState == SerialPortWorkerState.STARTED) { Helper.NLogger.Trace("Usuwanie nadmiaru spacji..."); message = Regex.Replace(message, @"\s+", " "); Helper.NLogger.Trace("Do workera zostanie wysłana wiadomosć do przetworzenia."); worker.WorkOnReceivedMessage(message); } else if (currentWorkerState == SerialPortWorkerState.STOPPED) { Helper.NLogger.Trace("Worker zostanie usunięty (bez wysyłania wiadmości!)."); RemoveWorkerFromCollection(serialPortClassWhichMessageHasBeenSentTo); } else //SerialPortWorkerState.PAUSED { } } else { Helper.NLogger.Warn($"Wokrer o klasie: {serialPortClassWhichMessageHasBeenSentTo} nie istnieje. Wiadomość: >>{message}<< nie może zostać wysłana"); } }
private void ChangeStateThisInMonitoring(SerialPortWorkerState workerState) { CurrentState = workerState; ChangedState?.Invoke(this, new ChangedStateEventArgs(CurrentState)); Helper.NLogger.Debug($"Zmieniono stan na: {CurrentState}"); }
public ChangedStateEventArgs(SerialPortWorkerState workerState) { WorkerState = workerState; }