问题标签 [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.
c# - 使用取消令牌取消任务
我有一个任务来获取我的数据。我有另一个属性,如果更改会取消任务并再次启动任务,但使用下面显示的不同参数。
财产:
所以我的问题是我总是在这种情况下完成之前取消任务。我如何获得这种情况,其中任务的第一个实例取消但从MyThing
属性触发的第二个实例一直运行到完成?
c# - 带有 CancellationToken 的任务状态不会改变
我正在实现一个下载器类并且我正在使用任务,首先我创建了一个任务并通过它传递了 CancellationToken,当我取消任务时,任务被取消但任务的状态仍然是运行,即使在我调用 ThrowIfCancellationRequested( ) 状态还是一样的。如果我抛出 ThrowIfCancellationRequested(),状态是否假定为 Canceled 或 Faulted。
这是我的代码:
c# - 处理 CancellationTokenRegistrations
人为的例子,但假设我在异步方法中有以下内容:
只要在几秒钟后调用回调,这就会按预期工作。但是,我想在 之后处理注册Task.Delay
,所以假设我进行以下修改:
在这种情况下,不会调用Callback ,可能是因为来自 的异常await Task.Delay...
导致注册在被调用之前被释放。
确保Callback
在取消时调用和始终处理注册的最佳方法是什么?
我确实想到了以下内容,但我不确定它有多强大:
c# - 是否有可能有一个取消令牌源只取消一些服务员?
鉴于:
BlockingCollection<T> coll
CancellationTokenSource cts
- 10 个线程被阻塞
coll.GetConsumingEnumerable(cts.Token)
所以cts.Cancel()
取消了所有 10 个线程。
是否可以编写一个自定义取消令牌源,可以告诉它只取消一些线程?所以:
只会取消 5 个被阻塞的线程。任意 5。
?
c# - 获取锁的任务的 CancellationToken
在获得锁的任务上使用 CancellationTokenSource
如果线程在取消发生时获得了锁,它不会释放锁
顺便说一句,线程需要立即停止,而不是完成工作
这是此类代码的示例:
我找到了几种处理方法,但我想听听一些建议
谢谢
编辑:要回答@spender 问题,这是一个想法(缩短)的实现:
c# - CancellationToken 影响由另一个 CancellationToken 控制的任务子集的好方法
有没有办法将取消令牌绑定到由另一个取消令牌控制的任务子集?......在这个例子中,我创建了两个cancellationTokenSource......并将一个注册到另一个的Cancel函数......如果我这样取消图像的加载...它只会取消那些任务...但是如果我取消所有...它会取消所有任务...有没有更好的方法来做到这一点?(这种方式看起来很乱......例如何时取消注册)
asynchronous - F# 处理任务取消
我很难理解为什么某些代码永远不会执行。
考虑这种扩展方法:
我知道当取消令牌被取消时AcceptSocketAsync
会抛出一个。TaskCanceledException
我已经签入了一个 C# 应用程序。想法是回归None
。
然而,这永远不会发生。return None
如果我在最后一个甚至在表达式中放置一个断点,if
当取消令牌被取消时,它永远不会停在那里。而且我知道它正在等待,Async.AwaitTask
因为如果在取消之前,其他客户端连接,它可以工作并在断点处停止。
我有点迷茫,为什么异常丢了?
c# - 如何从 Asp.Net MVC 中的 UI 取消正在进行的事务(在控制器中)?
我正在从 UI 向控制器发送事务请求并在控制器中处理该请求。
此过程可能会花费大约 10 秒的时间。
在处理交易时,用户可以取消交易。
所以我需要检查在每次提交之前是否点击了取消按钮。
我怀疑单击取消按钮时我无法将该值作为新请求传递,因为将创建新的控制器实例。
另一种选择是使用static
。但是建议告诉我不要为控制器引入静态字段。
如何处理这种情况?(可能有一些令牌或仍然有一些简单的工作?)
c# - 有没有其他方法可以将 Task.Status 设置为 Canceled
好的,所以我了解如何使用CancellationTokenSource
. 在我看来,Task
“那种”类型会自动处理此异常 - 它将Task
's设置Status
为 Cancelled。
现在你实际上仍然必须处理OperationCancelledException
. 否则异常冒泡到Application.UnhandledException
. Task 本身可以识别它并在内部进行一些处理,但是您仍然需要将调用代码包装在 try 块中以避免未处理的异常。有时,这似乎是不必要的代码。如果用户按下取消,则取消Task
(显然任务本身也需要处理它)。我觉得不需要任何其他代码要求。只需检查Status
属性以了解任务的完成状态。
从语言设计的角度来看,这有什么具体原因吗?有没有其他方法可以将Status
属性设置为取消?
c# - 为什么即使我取消了该任务的状态为“RanToCompletion”?
在下面的代码中,我有一个任务在用户按下任意键时被取消。这样做时,将调用 ContinuationTask 并声明该任务已被取消。ContinuationTask 被配置为只在任务被取消时运行——实际上它确实如此。
但是当我在调用线程完成后检查任务的状态时,我得到了“RanToCompletion”。这怎么可能?
这是代码: