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();
}
}
}