c#重置取消令牌

mrs*_*ent 1 c# task task-parallel-library cancellation

我有一些代码要运行,直到我请求取消为止。

              Task.Run(() =>
                {
                    while (!token.IsCancellationRequested)
                    {
                        GetFeedbackTask();
                    }
                }, token);
Run Code Online (Sandbox Code Playgroud)

然后我执行这个方法token.Cancel()。这将按预期取消任务,按预期取消我的 while 循环。问题是当我在取消token.IsCancellationRequested属性后再次尝试运行 Task 时true。是什么设置了属性false?我需要Dispose令牌吗?

Ser*_*rvy 5

您永远无法将 aCancellationToken从取消状态设置回非取消状态。

同样,Task您为工作而创建的 将结束;一旦令牌被取消,它不会只是坐在那里等待。该while循环会已经结束,并且没有更多的代码的任务将完成。

如果您想在取消后重新开始工作,请启动一个新的工作人员创建一个新的取消令牌