C3031
2026-01-30 130802fa7ef10857db12f784956d5ea122a1eeb4
LB_SmartVision/Forms/Pages/ProcessPage/ProcessControl.cs
@@ -10,6 +10,35 @@
    {
        UserHSmartWindowControl UserHSmartWindowControl = new UserHSmartWindowControl();
        public event ProcessRunBllRun OnProcessRunBllRun;
        private void onProcessRunBllRun()
        {
            if (OnProcessRunBllRun != null)
            {
                OnProcessRunBllRun();
            }
        }
        public string Title = string.Empty;
        public event Control_MouseDown event_MouseDown;
        public event Control_MouseDoubleClick event_MouseDoubleClick;
        private void event_mouseDown(object sender, MouseEventArgs e)
        {
            if (event_MouseDown != null)
            {
                event_MouseDown(sender, e);
            }
        }
        private void event_mouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (event_MouseDoubleClick != null)
            {
                event_MouseDoubleClick(this, e);
            }
        }
        ProcessRunBll ProcessRunBll
        {
            get
@@ -38,11 +67,17 @@
        {
            this.panel1.Controls.Add(this.UserHSmartWindowControl);
            this.UserHSmartWindowControl.Dock = DockStyle.Fill;
            this.UserHSmartWindowControl.event_MouseDoubleClick += event_mouseDoubleClick;
            this.UserHSmartWindowControl.event_MouseDown += event_mouseDown;
            SetTitle(_Layout.ProcessName);
            Title = _Layout.Title;
            if (ProcessRunBll != null)
                this.label1.Text = $"总数:{ProcessRunBll.total}";
            this.isClosed = false;
            var TaskPhotoContinue = Task.Factory.StartNew(() =>
            {
                ThreadCircleRun();
            });
        }
        public void SetTitle(string title)
@@ -72,9 +107,7 @@
                }));
            }
            else
            {
                UserHSmartWindowControl.ClearObj();
            }
        }
        /// <summary>
@@ -93,9 +126,7 @@
                }));
            }
            else
            {
                this.label1.Text = $"总数:{ProcessRunBll.total}";
            }
        }
        public bool Run(out string msg)
@@ -107,12 +138,10 @@
            }
            if (isCircleRuning || ProcessRunBll.bRuning)
            {
                ProcessRunBll.LogInfo($"{ProcessRunBll.Name}正在运行", LogInfoType.ERROR);
            }
            ProcessRunBll.Run();
            //ProcessRunBll.Run();
            onProcessRunBllRun();
            msg = ProcessRunBll.Msg;
            return ProcessRunBll.Result;
        }
@@ -126,9 +155,7 @@
                try
                {
                    if (ProcessRunBll == null)
                    {
                        return;
                    }
                    ProcessRunBll.LogInfo(string.Format("流程[{0}]开始运行", this.ProcessRunBll.Name), LogInfoType.INFO);
@@ -136,9 +163,7 @@
                    result = Run(out msg);
                    if (ProcessRunBll.GetImage(_Layout, out _, out HObject RecordImage))
                    {
                        ShowHoImage(RecordImage);
                    }
                }
                catch { msg = "运行出现了异常"; }
@@ -159,37 +184,36 @@
                if (isCircleRuning)
                {
                    threadCircleRun = new Thread(ThreadCircleRun);
                    threadCircleRun.IsBackground = true;
                    threadCircleRun.Start();
                    this.mAutoResetEvent.Set();
                }
                else
                {
                    isCircleRuning = false;
                    threadCircleRun.Abort();
                }
                if (!isCircleRuning)
                {
                    ProcessRunBll.LogInfo($"{ProcessRunBll.Name}关闭连续运行", LogInfoType.PASS);
                    return;
                }
                ProcessRunBll.LogInfo($"{ProcessRunBll.Name}开启连续运行", LogInfoType.WARN);
            }
            catch { }
        }
        Thread threadCircleRun = null;
        private AutoResetEvent mAutoResetEvent = new AutoResetEvent(false);
        bool isClosed = false;
        void ThreadCircleRun()
        {
            if (!isCircleRuning)
            while (!isClosed)
            {
                ProcessRunBll.LogInfo($"{ProcessRunBll.Name}关闭连续运行", LogInfoType.PASS);
                return;
            }
            ProcessRunBll.LogInfo($"{ProcessRunBll.Name}开启连续运行", LogInfoType.WARN);
            while (isCircleRuning)
            {
                //this.BeginInvoke(new Action(() =>
                //{
                try
                {
                    if (isCircleRuning == false)
                    {
                        this.mAutoResetEvent.WaitOne();
                    }
                    ProcessRunBll.LogInfo($"{ProcessRunBll.Name}开始运行", LogInfoType.WARN);
                    ClearObj();
                    bool result = ProcessRunBll.Run();
@@ -199,13 +223,9 @@
                        , result ? LogInfoType.PASS : LogInfoType.ERROR);
                    if (ProcessRunBll.GetImage(_Layout, out _, out HObject RecordImage))
                    {
                        ShowHoImage(RecordImage);
                    }
                }
                catch { }
                //}));
                Thread.Sleep(33);
            }
        }