using System.Threading; namespace SKMC.Api.Common.Tasks { /// /// 任务执行控制令牌,用于控制线程/工站任务的执行状态 /// 主要包含三种控制能力: /// 1. 暂停 / 恢复(Pause / Resume) /// 2. 取消执行(Cancel / Stop) /// 3. 等待执行许可(SetWaitPoint) /// 注意: /// - Pause / Resume 属于可重复状态控制 /// - Cancel / Stop 为一次性终止操作,调用后不可恢复 /// public class TaskToken { public int Id { get; set; } public CancellationTokenSource TokenSource { get; set; } = new CancellationTokenSource(); public ManualResetEvent ResetEvent { get; set; } = new ManualResetEvent(true); /// /// 添加中断点 /// public void SetWaitPoint() { ResetEvent.WaitOne(); } /// /// 取消 /// public void Cancel() { TokenSource.Cancel(); } /// /// 是否取消 /// /// public bool IsCancelled() { return TokenSource.IsCancellationRequested; } /// /// 暂停 /// public void Pause() { ResetEvent.Reset(); } /// /// 恢复 /// public void Resume() { ResetEvent.Set(); } /// /// 停止 /// public void Stop() { Cancel(); Resume(); } } }