230得票4回答
Task构造函数中的取消令牌:为什么需要?

某些 System.Threading.Tasks.Task 的构造函数会将 CancellationToken 作为参数传入: CancellationTokenSource source = new CancellationTokenSource(); Task t = new Task...

214得票7回答
何时应该处理CancellationTokenSource?

CancellationTokenSource类是可释放的。在Reflector中快速查看证明了KernelEvent的使用,这是一个(很可能是)非托管资源。 由于CancellationTokenSource没有终结器,如果我们不处理它,垃圾回收程序也不会这样做。 另一方面,如果您查看MS...

172得票5回答
为什么 CancellationToken 要与 CancellationTokenSource 分离?

我正在寻找一个解释为什么.NET引入了CancellationToken结构体,除了CancellationTokenSource类。 我理解如何使用API,但也想了解为什么以这种方式设计。 也就是说,为什么我们有:var cts = new CancellationTokenSource(...

168得票4回答
如何在不抛出/捕获异常的情况下使用CancellationToken?

与之前的代码for class RulyCanceler相比,我想使用CancellationTokenSource来运行代码。 如何像Cancellation Tokens中所述那样使用它,即不抛出/捕获异常?我可以使用IsCancellationRequested属性吗? 我尝试像这样...

165得票5回答
CancellationToken的默认参数

我有一些异步代码,想要添加一个CancellationToken。然而,并非所有情况都需要使用此功能,因此我想设置一个默认参数——可能是CancellationToken.None。但是, Task<x> DoStuff(...., CancellationToken ct = ...

80得票5回答
如何在超时或取消请求之前“休眠”

什么是在特定时间内睡眠的最佳方法,但又能够被来自CancellationToken的IsCancellationRequested中断? 我正在寻找一个适用于.NET Framework 4.0+的解决方案。 我想写: void MyFunc(CancellationToken ct) ...

78得票4回答
链接取消令牌

我使用一个取消令牌,以便我的服务可以被干净地关闭。该服务具有保持尝试连接到其他服务的逻辑,因此这个令牌是退出在不同线程中运行的重试循环的好方法。我的问题是,我需要调用一个具有内部重试逻辑的服务,但如果重试失败,则在设定的时间后返回。我想创建一个带有超时的新取消令牌来为我完成这个操作。问题在于,...

76得票3回答
如何正确重置CancellationToken?

今天早上我一直在使用 Async CTP,有一个简单的程序,里面有一个button和一个label。点击 button 后,它就开始更新label,停止 button 后,它会停止写入到 label 中。但是,我不知道如何重置 CancellationTokenSource 以便重新启动该进程...

70得票4回答
我应该在控制器操作中始终添加CancellationToken吗?

无论操作是否耗时,始终在我的动作中添加CancellationToken是否是一个好的做法? 我目前正在将它添加到每个动作中,但我不知道这是对还是错。[ApiController] [Route("api/[controller]")] public class DummiesControl...

68得票4回答
使用异步的Dapper方法时如何使用CancellationToken?

我正在使用来自Nuget的Dapper 1.31版本。我有这个非常简单的代码片段:string connString = ""; string query = ""; int val = 0; CancellationTokenSource tokenSource = new Cancella...