问题标签 [cancellation]

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.

0 投票
2 回答
689 浏览

android - 如何取消具有本机代码 (C/C++) 的任务?

背景

我有一个简短而繁重的任务,它使用 NDK (JNI) 来进行一些位图操作。

在某些情况下,我需要取消任务并去做其他事情。

但是,由于该任务也使用了大量内存,并且最终还会创建一个大位图,这可能会导致内存不足错误。

问题

我应该如何取消包含本机代码的任务?对此有最佳做法吗?

也许某种我可以用于 C/C++ 的中断异常,以便一旦它被捕获,我至少可以释放所有内存?

也许我应该在本机代码中添加某种侦听器(观察者)?或者也许我应该调用一个我需要假设调用者拥有的方法?

0 投票
2 回答
1498 浏览

android - AsyncTask 没有取消 android 中长时间运行的操作

我必须从服务器下载大量数据。下载至少需要 10 秒。这是我使用 asyntask 类下载的代码。如果用户在下载操作进行时单击主页按钮,我想无条件取消下载操作。问题是......我正在执行 cancel() 方法,但它没有取消下载操作。即使我退出应用程序,我也看到该操作在 logcat 视图中在后台运行。我只想停止执行 doInBackground() 方法。请指导/帮助我。

点击下载按钮:

这是 Asynctask 类:

在 onPause()..

这是位于另一个名为 DataConnection 的类中的方法...

0 投票
4 回答
237632 浏览

c# - 如何使用 CancellationToken 属性?

与前面的 RulyCanceler 类的代码相比,我想使用 CancellationTokenSource.

如何使用Cancellation Tokens中提到的它,即不抛出/捕获异常?我可以使用该IsCancellationRequested物业吗?

我试图这样使用它:

但这cancelToken.ThrowIfCancellationRequested();在方法中给出了运行时错误Work(CancellationToken cancelToken)

我成功运行的代码在新线程中捕获了 OperationCanceledException:

0 投票
0 回答
532 浏览

asp.net-mvc - 取消正在执行的动作

我有一个带有过滤器和 2 个按钮的页面:生成和取消。因此,当我单击“生成”按钮时,我会转到“结果”操作。当我单击取消按钮时,我想取消我之前在代码和数据库中的请求。

一些代码(我使用 .NET 4.0、MVC 4)

结果控制器.cs:

结果存储库.cs

所以,预期的结果:如果我取消报告生成请求应该被取消,没有数据显示。

主要问题:我可以使用方法 tokenSource.Cancel() 取消请求吗?或者我应该使用 ThrowIfCancellationRequested() 方法(在哪里?)

0 投票
3 回答
243 浏览

c# - 如何从工作线程轮询取消

我有一个 UI,它产生一个后台工作线程,该线程执行一个复杂的任务树和子任务,大约需要一分钟才能完成。

一个要求是后台工作任务必须能够在它开始后被取消。

目前我的解决方案很幼稚,使代码变得一团糟。在 UI 中按下取消按钮时,将设置取消令牌。工作线程定期(在任务之间)轮询此令牌,如果已设置,则退出:

有更好的解决方案吗?我正在玩类似 SoLongAs 语句的东西,它会自动插入检查并在满足条件时自动引发内部异常,这将在循环结束时在内部被捕获,例如:

但我想由于某种原因这行不通,更重要的是我怀疑这样的事情是否真的存在。如果没有,有没有比我目前使用的更好的方法来处理这种情况?谢谢。

0 投票
1 回答
144 浏览

c++ - C++ 中取消的数值问题

我在浮点运算中确实存在取消问题。我知道问题出在哪里,但我想不出一个有效的解决方案。

这是我的问题:我有一个 3D 粒子模拟,所以每个粒子都有 3 个坐标(x,y,z)。整个域被分成子单元。在某一时刻,我计算了粒子在某个时间步长所在的子单元格的 ID。这是一个简单的公式:

pos[1] 是粒子的 x 坐标,y_min 是域的开始,cellWidth 是单元格的宽度。

这是我的问题:我有一个测试用例,在这种情况下粒子的坐标应该是 0。由于浮点不准确,它大约是。-3e-18。当我使用这个公式时,-3e-18 由于取消而下降。现在最大的问题是,由于粒子位置为负,并且边界正好在 0,我得到的 cellID 与粒子实际所在的 cellID 不同。

那么有人知道如何解决这个问题吗?我希望它说清楚

0 投票
4 回答
6371 浏览

scala - 在 Scala 中使用 Future 和 Promise 取消

这是我之前的问题的后续。

假设我有一个任务,它执行一个可中断的阻塞调用。我想将它作为a运行Future并使用.failurePromise

我希望取消工作如下:

  • 如果在任务完成之前取消任务,我希望任务“立即”完成,如果它已经开始,则中断阻塞调用,我希望调用.FutureonFailure

  • 如果在任务完成取消任务,我想得到一个状态,说明取消失败,因为任务已经完成。

是否有意义?是否可以在 Scala 中实现?有没有这种实现的例子?

0 投票
4 回答
4658 浏览

scheduling - 使用 Akka 中的默认调度程序,我是否需要在目标 actor 停止时手动取消事件?

当使用默认 Akka 系统调度程序上的方法(context().system().scheduler().schedule()从参与者内部)以及接受目标参与者的重载之一时,我是否需要在目标参与者停止时使用返回的 Cancellable 显式取消以释放资源?

我想调度程序可能是watch()目标参与者并自动执行清理,但在文档中的任何地方都找不到明确的状态。

0 投票
1 回答
408 浏览

c# - 如何正确取消 BackgroundWorker

我有一个作为主线程的 GUI 表单,而我有一个不同的类用于需要完成的实际工作。

有没有办法正确检查CancellationPending工人的属性,因为它是从不同的类激活的,除了将工人作为“DoJob”方法的参数传递,以便它可以检查属性?

代码(在主类中):

0 投票
2 回答
1129 浏览

c# - C#如何在没有cancellationPending的情况下停止运行backgroundWorker

有什么方法可以在没有cancelPending的情况下停止backgroundWorker线程?我有这样的代码:

即使它启动了VeryLongTimeComputingFunc(),有什么方法可以阻止工人吗?