HuanMengProject/HuanMeng.DotNetCore/Processors/ThreadProcessor.cs
2024-06-11 18:19:18 +08:00

123 lines
3.0 KiB
C#

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