c# 重置取消令牌
c# Reset Cancellation token
我有一些代码想要 运行,直到我请求取消。
Task.Run(() =>
{
while (!token.IsCancellationRequested)
{
GetFeedbackTask();
}
}, token);
然后我执行这个方法token.Cancel()
。这将按预期取消任务,并按预期取消我的 while 循环。问题是当我在取消 token.IsCancellationRequested
后再次尝试 运行 任务时 属性 仍然是 true
。是什么将 属性 设置回 false
?我需要 Dispose
令牌吗?
您永远无法将 CancellationToken
从已取消状态设置回 non-cancelled 状态。
同样,您创建的用于工作的 Task
也将结束;一旦令牌被取消,它就不会坐在那里等待。 while
循环将结束,由于没有更多代码,任务将完成。
如果您想 re-start 取消工作后 启动一个新工作人员 并 创建一个新的取消令牌 .
您需要创建一个新的 CancellationTokenSource
- 一旦设置就无法重置。
token.Dispose(); // Clean up old token source....
token= new CancellationTokenSource(); // "Reset" the cancellation token source...
Task.Run(() =>
{
while (!token.IsCancellationRequested)
{
GetFeedbackTask();
}
}, token);
我有一些代码想要 运行,直到我请求取消。
Task.Run(() =>
{
while (!token.IsCancellationRequested)
{
GetFeedbackTask();
}
}, token);
然后我执行这个方法token.Cancel()
。这将按预期取消任务,并按预期取消我的 while 循环。问题是当我在取消 token.IsCancellationRequested
后再次尝试 运行 任务时 属性 仍然是 true
。是什么将 属性 设置回 false
?我需要 Dispose
令牌吗?
您永远无法将 CancellationToken
从已取消状态设置回 non-cancelled 状态。
同样,您创建的用于工作的 Task
也将结束;一旦令牌被取消,它就不会坐在那里等待。 while
循环将结束,由于没有更多代码,任务将完成。
如果您想 re-start 取消工作后 启动一个新工作人员 并 创建一个新的取消令牌 .
您需要创建一个新的 CancellationTokenSource
- 一旦设置就无法重置。
token.Dispose(); // Clean up old token source....
token= new CancellationTokenSource(); // "Reset" the cancellation token source...
Task.Run(() =>
{
while (!token.IsCancellationRequested)
{
GetFeedbackTask();
}
}, token);