问题标签 [cancellationtokensource]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
310 浏览

c# - 使用取消令牌取消任务

我有一个任务来获取我的数据。我有另一个属性,如果更改会取消任务并再次启动任务,但使用下面显示的不同参数。

财产:

所以我的问题是我总是在这种情况下完成之前取消任务。我如何获得这种情况,其中任务的第一个实例取消但从MyThing属性触发的第二个实例一直运行到完成?

0 投票
1 回答
623 浏览

c# - 带有 CancellationToken 的任务状态不会改变

我正在实现一个下载器类并且我正在使用任务,首先我创建了一个任务并通过它传递了 CancellationToken,当我取消任务时,任务被取消但任务的状态仍然是运行,即使在我调用 ThrowIfCancellationRequested( ) 状态还是一样的。如果我抛出 ThrowIfCancellationRequested(),状态是否假定为 Canceled 或 Faulted。

这是我的代码:

0 投票
2 回答
922 浏览

c# - 处理 CancellationTokenRegistrations

人为的例子,但假设我在异步方法中有以下内容:

只要在几秒钟后调用回调,这就会按预期工作。但是,我想在 之后处理注册Task.Delay,所以假设我进行以下修改:

在这种情况下,不会调用Callback ,可能是因为来自 的异常await Task.Delay...导致注册在被调用之前被释放。

确保Callback在取消时调用和始终处理注册的最佳方法是什么?

我确实想到了以下内容,但我不确定它有多强大:

0 投票
1 回答
454 浏览

c# - 是否有可能有一个取消令牌源只取消一些服务员?

鉴于:

  • BlockingCollection<T> coll
  • CancellationTokenSource cts
  • 10 个线程被阻塞coll.GetConsumingEnumerable(cts.Token)

所以cts.Cancel()取消了所有 10 个线程。

是否可以编写一个自定义取消令牌源,可以告诉它只取消一些线程?所以:

只会取消 5 个被阻塞的线程。任意 5。

?

0 投票
1 回答
632 浏览

c# - 获取锁的任务的 CancellationToken

在获得锁的任务上使用 CancellationTokenSource

如果线程在取消发生时获得了锁,它不会释放锁

顺便说一句,线程需要立即停止,而不是完成工作

这是此类代码的示例:

我找到了几种处理方法,但我想听听一些建议

谢谢

编辑:要回答@spender 问题,这是一个想法(缩短)的实现:

0 投票
1 回答
116 浏览

c# - CancellationToken 影响由另一个 CancellationToken 控制的任务子集的好方法

有没有办法将取消令牌绑定到由另一个取消令牌控制的任务子集?......在这个例子中,我创建了两个cancellationTokenSource......并将一个注册到另一个的Cancel函数......如果我这样取消图像的加载...它只会取消那些任务...但是如果我取消所有...它会取消所有任务...有没有更好的方法来做到这一点?(这种方式看起来很乱......例如何时取消注册)

0 投票
1 回答
500 浏览

asynchronous - F# 处理任务取消

我很难理解为什么某些代码永远不会执行。

考虑这种扩展方法:

我知道当取消令牌被取消时AcceptSocketAsync会抛出一个。TaskCanceledException我已经签入了一个 C# 应用程序。想法是回归None

然而,这永远不会发生。return None如果我在最后一个甚至在表达式中放置一个断点,if当取消令牌被取消时,它永远不会停在那里。而且我知道它正在等待,Async.AwaitTask因为如果在取消之前,其他客户端连接,它可以工作并在断点处停止。

我有点迷茫,为什么异常丢了?

0 投票
1 回答
1255 浏览

c# - 如何从 Asp.Net MVC 中的 UI 取消正在进行的事务(在控制器中)?

在此处输入图像描述

我正在从 UI 向控制器发送事务请求并在控制器中处理该请求。

此过程可能会花费大约 10 秒的时间。

在处理交易时,用户可以取消交易。

所以我需要检查在每次提交之前是否点击了取消按钮。

我怀疑单击取消按钮时我无法将该值作为新请求传递,因为将创建新的控制器实例。

另一种选择是使用static。但是建议告诉我不要为控制器引入静态字段。

如何处理这种情况?(可能有一些令牌或仍然有一些简单的工作?)

0 投票
2 回答
2844 浏览

c# - 有没有其他方法可以将 Task.Status 设置为 Canceled

好的,所以我了解如何使用CancellationTokenSource. 在我看来,Task“那种”类型会自动处理此异常 - 它将Task's设置Status为 Cancelled。

现在你实际上仍然必须处理OperationCancelledException. 否则异常冒泡到Application.UnhandledException. Task 本身可以识别它并在内部进行一些处理,但是您仍然需要将调用代码包装在 try 块中以避免未处理的异常。有时,这似乎是不必要的代码。如果用户按下取消,则取消Task(显然任务本身也需要处理它)。我觉得不需要任何其他代码要求。只需检查Status属性以了解任务的完成状态。

从语言设计的角度来看,这有什么具体原因吗?有没有其他方法可以将Status属性设置为取消?

0 投票
0 回答
1083 浏览

c# - 为什么即使我取消了该任务的状态为“RanToCompletion”?

在下面的代码中,我有一个任务在用户按下任意键时被取消。这样做时,将调用 ContinuationTask 并声明该任务已被取消。ContinuationTask 被配置为只在任务被取消时运行——实际上它确实如此。

但是当我在调用线程完成后检查任务的状态时,我得到了“RanToCompletion”。这怎么可能?

这是代码: