64得票4回答
在Task.Run中使用CancellationToken进行超时控制不起作用。

好的,我的问题非常简单。为什么这段代码没有抛出TaskCancelledException?static void Main() { var v = Task.Run(() => { Thread.Sleep(1000); return 1...

57得票3回答
我们是否应该在MVC/Web API控制器中使用CancellationToken?

有不同的异步控制器示例。其中一些在方法定义中使用CancellationToken:public async Task<ActionResult> ShowItem(int id, CancellationToken cancellationToken) { await D...

49得票6回答
使用取消标记的NetworkStream.ReadAsync从未取消

这里是证明。 有任何想法,这段代码有什么问题吗? [TestMethod] public void TestTest() { var tcp = new TcpClient() { ReceiveTimeout = 5000, SendTimeout = ...

47得票8回答
如何使一个方法可取消而不会变得丑陋?

我目前正在将我们长期运行的方法改为可取消的过程中。我计划使用System.Threading.Tasks.CancellationToken来实现。 我们的方法通常会执行一些耗时的步骤(主要是发送命令并等待硬件响应),例如:void Run() { Step1(); Step2...

44得票5回答
默认的CancellationToken是否等同于CancellationToken.None?

看到CancellationToken.None的实现,它只是返回default(CancellationToken)。然而,在CancellationToken的文档中我没有看到这两者等价的参考。 我想提供一个像这样的API,但只有在确定它始终有效之后才能实现:Task DoSomethin...

41得票3回答
取消令牌取消注册操作。

我有一个用于各种任务的令牌,我需要更好地管理它们的取消,为了得到取消通知,我可以使用:token.Register(RegisterMethod); 我该如何取消这个“订阅”?是否有“注销”的方式? 我考虑使用TaskCompletionSource来解决问题,但我不知道它是否会很好地工作。那...

35得票7回答
获取任务的取消标记。

在执行任务操作期间,我能否获取传递给Task构造函数的CancellationToken。大多数示例看起来像这样: 我能否在任务执行期间获得传递给Task构造函数的CancellationToken?大部分示例都是这样的:CancellationTokenSource cts = new C...

28得票2回答
为什么存在CancellationTokenRegistration并且为什么它实现了IDisposable接口?

我看到一些代码使用CancellationTokenRegistration的using子句和Cancellation.Register:using (CancellationTokenRegistration ctr = token.Register(() => wc.CancelAs...

27得票3回答
使用 "return" 终止或退出 C# 异步方法

我对 C# 5.0 中的 async-await 方法不熟悉,脑海中有几个问题: 如果输入参数或空检查失败,逃离 async 方法的最佳方法是什么? 在 Task async 方法中使用 return; 的逻辑流是什么(在某些情况下,它会变成无限循环)? 在这种情况下...

27得票6回答
使用CancellationToken在键盘事件中调用Task.Delay时出现TaskCanceledException异常

我想延迟处理从WinRT键盘事件调用的方法(例如SubmitQuery())直到在一段时间内没有更多事件发生(在此示例中为500毫秒)。 只有当我认为用户已完成输入时,才希望运行SubmitQuery()。 使用以下代码时,每当调用Task.Delay(500, cancellationT...