namespace HuanMeng.DotNetCore.Processors { /// /// 包含处理线程的Processor /// public abstract class ThreadProcessor : BaseProcessor { /// /// 处理线程 /// protected Thread? _thread = null; /// /// 是否运行处理器 /// protected bool _isRunProc = true; /// /// 构造函数 /// public ThreadProcessor() { } /// /// 执行处理 /// public override void Run() { try { _isRunProc = true; _thread = new Thread(new ThreadStart(Proc_Do)); _thread.Start(); // LogHelper.Info($"ThreadProcessor.Run已执行"); } catch (Exception ex) { // LogHelper.Error($"ThreadProcessor.Run,error", ex); } } /// /// 线程处理函数 /// protected abstract void Proc_Do(); //{ // LogHelper.Info($"ThreadProcessor.Proc_Do已执行"); // ////demo // ////处理流程 // //while (_isRunProc) // //{ // // try // // { // // //DoProeess(); // // //简单示例Sleep // // Thread.Sleep(10000); // // } // // catch (Exception ex) // // { // // LogHelper.Error("ThreadProcessor.Proc_Do,DoProeess异常", ex); // // } // //} //} //demo ///// ///// 执行流程处理 ///// //protected virtual void DoProeess() //{ // //简单示例 // try // { // //简单示例Sleep // Thread.Sleep(10000); // } // catch (Exception ex) // { // LogHelper.Error("ThreadProcessor.Proc_Do,异常", ex); // } //} /// /// 停止处理线程 /// public override void Stop() { //加快停止服务的速度,可以用任务执行,不等待结束 //Task.Run(() => //{ _isRunProc = false; //等待完成停止 if (_thread != null && _thread.IsAlive) { _thread.Join(WaitTimeMax_StopProc); //等待线程结束 _thread = null; } // LogHelper.Info($"ThreadProcessor.Stop已执行"); //}); } /// /// Dispose /// public override void Dispose() { //停止处理线程 _isRunProc = false; this.Stop(); base.Dispose(); } } }