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