问题标签 [cancellation-token]
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# - 为什么 TaskFactory.StartNew 会收到 CancellationToken
可能重复:
任务构造函数中的取消标记:为什么?
此方法接收 CancellationToken:
既然取消是合作的(实际工作的代码需要观察取消令牌),那么将 this 作为参数传递给 StartNew 方法的目的是什么?
.net - 带有取消令牌的 NetworkStream.ReadAsync 永远不会取消
这里证明。
知道这段代码有什么问题吗?
f# - 在 Async.FromContinuations 声明中获取取消标记
考虑以下定义
假设我想像这样尝试计算
这自然不会使内部循环停止,因为我没有传递合适的取消令牌。有什么方法可以通过 Async.FromContinuations 获取外部取消令牌?我可以使用异步构建器和 Async.CancellationToken 重写它,但是我将失去将延续传递给内部表达式的能力。
asp.net-mvc - MVC 使用取消令牌取消任务
我想使用此处所述的取消令牌取消任务:http: //msdn.microsoft.com/en-us/library/dd997396.aspx。
唯一的区别是:
我想在浏览到特定控制器/操作时启动一项任务,并在我离开时取消要调用的任务(tokenSource.Cancel()),浏览远离我当前正在执行的特定操作(页面)。我该怎么做?谢谢
c# - 停止线程、ManualResetEvent、volatile boolean 或 cancelToken
我在 Windows 服务中有一个线程 (STAThread),它执行大量工作。当 Windows 服务重新启动时,我想优雅地停止这个线程。
我知道几种方法
- 一个不稳定的布尔值
- 手动复位事件
- 取消令牌
据我发现 Thread.Abort 是不行的......
最佳做法是什么?这项工作是在另一个类中执行的,而不是启动线程的类,因此有必要在构造函数中引入 cancelToken 参数,或者例如具有一个 volatile 变量。但我就是不知道什么是最聪明的。
更新
只是为了澄清一点,我已经总结了一个非常简单的例子来说明我在说什么。如前所述,这是在 Windows 服务中完成的。现在我在想一个在循环中检查的 volatile boolean 或 cancelToken.... 我不能等待循环完成,如下所述,它可能需要几分钟,使服务器的系统管理员相信当他们需要重新启动服务时,服务出现问题......接口被调用,因此需要进行小清理。
更新
刚刚检查了性能,使用在代码中“检查”isCancelled 状态的cancellationToken 比在ManualResetEventSlim 上使用waitOne 快得多。一些快速计算者,如果在 cancelToken 上在 for 循环中迭代 100.000.000 次,我大约花费了我。500 毫秒,其中 WaitOne 的成本约为。3 秒。因此在这种情况下的性能使用cancellationToken 会更快。
.net-4.5 - 异步存储库和 CancellationToken
我们正在迁移到 .NET 4.5,我正在考虑将异步添加到我的存储库中:
实现可能会调用 DB、WebServices 等。
我的问题是,我应该支持 CancellationToken 吗?
(别担心 - FindAllAsync() 可能是基于 Rx 的:))
.net - 如果无法轮询 CancellationToken,则提供取消
这是一个阻塞调用者线程但不支持取消的方法的(愚蠢的)示例:
在最坏的情况下,调用此方法需要 17 小时才能返回。假装我无权访问此方法的源代码。如何将调用包装在采用 CancellationToken 的方法中?
目标是让WorkUntil5()
运行直到请求取消。此时应使用任何可能的方式终止呼叫。
这是我自己想出的最好方法。它使用任务,但它仍然阻塞调用者的线程。感觉有些不对劲。mres.Set()
认为一旦第一个呼叫返回,应该有更好的呼叫方式。
c# - await 方法中的取消令牌
在任务的构造函数中放置令牌有很多原因,这里提到: 任务构造函数中的取消令牌:为什么?
使用关键字 async / await,它是如何工作的?例如我下面的代码:
虽然它是一个异步过程。我很快就使用了“Task.StartNext”或“Task.Run”或“新任务”。为了能够指定我的取消令牌,我该怎么做?
c# - CancellationToken 取消注册操作
我有一个用于各种任务的令牌,我需要更好地管理它们的取消,以便收到我可以使用的取消通知:
如何删除此“订阅”?有没有办法“取消注册”?
我想过用 TaskCompletionSource 做一个解决方法。但我不知道它是否会运作良好。解决这种方法的最佳方法是什么?