Exemple #1
0
        /// <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));
            }
        }
Exemple #2
0
        /// <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));
            }
        }