123 lines
3.0 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|