/// <summary> /// Control table Update DoWork /// </summary> /// <param name="sender">system sender</param> /// <param name="e">system DoWorkEventArgs</param> private void MonitorComPortDoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = sender as BackgroundWorker; string comPortName = e.Argument as string; bool nextRun = true; while (nextRun) { if (worker.CancellationPending == true) { e.Cancel = true; worker.ReportProgress(0, "Close!!" as object); break; } else { if (this.comPort != null) { if (this.timeCount > TimeoutLimit) { // time out this.comPort.CloseComPort(); this.comPort = null; } else { this.timeCount++; } } else { this.comPort = new ClsComPort(); this.comPort.ReceiveMessage += (object objectSender, EventArgs eventArgs, string updateMessage) => { worker.ReportProgress(0, updateMessage as object); this.timeCount = 0; }; this.comPort.TransmitMessage += (object objectSender, EventArgs eventArgs, string updateMessage) => { worker.ReportProgress(0, updateMessage as object); this.timeCount = 0; }; this.comPort.Initialize(comPortName); } System.Threading.Thread.Sleep(1000); } } }