/// <summary> /// 启动线程 /// </summary> /// <param name="plc"></param> public void SpinUp(CLEDCom devMon, bool autoMode = false) { this._devMon = devMon; this.autoMode = autoMode; if (_threadMon == null) { _dispose = false; if (_autoMode) { _paused = false; _threadStatus = EThreadStatus.运行; } else { _paused = true; _threadStatus = EThreadStatus.暂停; } _iniOK = false; _threadMon = new Thread(OnStart); _threadMon.Name = _name; _threadMon.IsBackground = true; _threadMon.Start(); OnStatusArgs.OnEvented(new CConArgs(CLanguage.Lan("创建监控线程") + _threadMon.Name)); } }
/// <summary> /// 启动监控 /// </summary> private void OnStart() { try { while (true) { if (_dispose) { return; } Thread.Sleep(_delayMs); if (!_autoMode && _paused) { continue; } Stopwatch wather = new Stopwatch(); wather.Start(); string er = string.Empty; //if (_iniOK) //{ // if (!writeData(out er)) // OnDataArgs.OnEvented(new CDataArgs(er, false, true)); //} //if (!readData(out er)) // OnDataArgs.OnEvented(new CDataArgs(er, false, true)); if (!readAndWriteData(out er)) { OnDataArgs.OnEvented(new CDataArgs(er, false, true)); } _iniOK = true; wather.Stop(); if (!_autoMode) { _paused = true; _threadStatus = EThreadStatus.暂停; OnDataArgs.OnEvented(new CDataArgs(CLanguage.Lan("监控扫描时间") + ":" + wather.ElapsedMilliseconds.ToString() + "ms")); continue; } _threadStatus = EThreadStatus.运行; } } catch (Exception ex) { OnStatusArgs.OnEvented(new CConArgs(_threadMon.Name + CLanguage.Lan("监控线程异常错误") + ":" + ex.ToString(), true)); } finally { _dispose = false; _threadStatus = EThreadStatus.退出; OnStatusArgs.OnEvented(new CConArgs(_threadMon.Name + CLanguage.Lan("监控线程销毁退出"), true)); } }