gpt4 book ai didi

c# - 使用 CancellationTokenSource

转载 作者:行者123 更新时间:2023-12-01 21:26:32 29 4
gpt4 key购买 nike

有人可以举个例子,我应该使用带有三个参数的下一个方法。

var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;

Task.Factory.StartNew(MyTask, token, token);

您能解释一下为什么我们需要第三个参数吗?

最佳答案

StartNew 没有过载即StartNew(Action, CancellationToken, CancellationToken) 。最有可能的是,这里调用的方法是 StartNew(Action<object>, object, CancellationToken) .

此重载启动操作,传入提供的对象(第二个参数)作为此操作的参数。

我只能假设这样做的原因是为了让该操作可以参与CancellationToken的合作取消过程。提供。换句话说,它不仅允许任务通过 token 配合取消,而且您可以在操作中使用它以便尽快退出执行并可能避免 ThreadAbortedException。

var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;

Task.Factory.StartNew(x =>
{
var token = (CancellationToken)x;
for(var item in ReallyBigCollection){
Process(item, token);
if(token.IsCancellationRequested)
return;
}
}, token, token);

除非您要使用 CancellationToken,否则没有太多理由使用它。

关于c# - 使用 CancellationTokenSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30427424/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com