14得票4回答
没有CancellationToken停止一个任务

我正在使用一个外部库,该库具有async方法,但没有CancellationToken的重载。 目前,我正在使用来自另一个StackOverflow问题的扩展方法来添加CancellationToken: public async static Task HandleCancell...

9得票2回答
Task.Delay没有被取消?

我正在尝试为一款游戏构建界面。这个游戏持续1分钟。 GetStop 方法在60秒后停止游戏。 play 方法开始游戏,而 quit 方法则退出游戏。现在理想情况下,如果我在30秒后退出游戏,则计时器应该被重置,当我再次点击“播放”按钮时,计时器应该再次运行1分钟。这样下一局游戏将运行1分钟。如...

188得票4回答
如何取消 await 中的任务?

我正在使用这些Windows 8 WinRT任务进行开发,尝试使用下面的方法取消一个任务,它在某种程度上是有效的。CancelNotification方法确实被调用了,这让你以为任务已经被取消了,但实际上任务在后台继续运行,直到完成后,任务的状态始终是已完成而不是已取消。有没有办法在任务被取消...

8得票2回答
如何在 BlockingCollection 上取消 GetConsumingEnumerable()?

在以下代码中,我使用CancellationToken来在生产者不生产时唤醒GetConsumingEnumerable(),并且希望退出foreach并退出任务。但是我没有看到IsCancellationRequested被记录,而我的Task.Wait(timeOut)等待了整个timeO...

7得票1回答
取消的任务不会返回控制到异步块

我试图将这个问题简化到最小的可重现状态,但它仍然比较长,抱歉。 我有一个F#项目,引用了一个包含以下代码的C#项目。 public static class CSharpClass { public static async Task AsyncMethod(Cancellatio...

10得票3回答
如果在取消点时调用信号处理程序会发生什么?

假设一个应用程序在取消点,例如read处被阻塞,并接收到一个信号并调用信号处理程序。 Glibc / NPTL通过在系统调用期间启用异步取消来实现取消点,因此据我所知,异步取消将在整个信号处理程序的持续时间内保持有效。当然,这是极其错误的,因为有许多函数不是异步取消安全的,但需要从信号处理程序...

21得票6回答
SwingWorker:done方法何时被调用?

SwingWorker的done()方法的Javadoc: doInBackground方法完成后,在事件派发线程上执行。 我有线索表明在取消工作线程的情况下,这不是正确的。done无论是在正常终止还是取消时都会被调用,但是当cancelled为真时,它不会被加入到事件派发线程中,...

10得票3回答
在OperationCanceledException情况下,Task.Wait的行为出乎意料

考虑以下代码片段:CancellationTokenSource cts0 = new CancellationTokenSource(), cts1 = new CancellationTokenSource(); try { var task = Task.Run(() =>...

10得票1回答
在用户空间实现可取消的系统调用

我正在尝试在Linux上实现pthread取消,但不希望出现任何“不愉快的行为”(一些人可能会说是错误),这是我最近其他一些问题的讨论。到目前为止,Linux/glibc对pthread取消的处理方式是将其视为不需要内核支持并且可以纯粹通过在syscall调用之前启用异步取消,并在syscal...

11得票1回答
使用CancellationToken正确地与LINQ配合使用的方法

我正在尝试编写一个支持使用.NET框架中提供的CancellationToken机制取消的LINQ查询。但是,如何正确地组合取消和LINQ还不清楚。 使用PLINQ,可以编写以下代码: var resultSequence = sourceSequence.AsParallel() ...