问题标签 [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 投票
1 回答
471 浏览

android-contentprovider - ContentProvider:如何取消先前对 delete() 的调用?

我正在使用自定义ContentProvider。对于查询,有一个CancellationSignal (API 16+) 可用于取消先前对query()的调用。

我的问题:我怎样才能存档delete()?为了澄清起见,我的自定义提供商管理 SD 卡上的文件,因此我希望能够取消我的提供商内部的删除操作。

0 投票
1 回答
1140 浏览

.net - 如果无法轮询 CancellationToken,则提供取消

这是一个阻塞调用者线程但不支持取消的方法的(愚蠢的)示例:

在最坏的情况下,调用此方法需要 17 小时才能返回。假装我无权访问此方法的源代码。如何将调用包装在采用 CancellationToken 的方法中?

目标是让WorkUntil5()运行直到请求取消。此时应使用任何可能的方式终止呼叫。

这是我自己想出的最好方法。它使用任务,但它仍然阻塞调用者的线程。感觉有些不对劲。mres.Set()认为一旦第一个呼叫返回,应该有更好的呼叫方式。

0 投票
1 回答
8647 浏览

java - 检查 Java 定时器是否被取消

为什么没有java.util.Timer对象isCancelled的方法?

如果 Timer 没有被取消,我想安排一个任务,如果它被取消,我想直接运行它(在同一个线程上)。

IllegalStateException如果 Timer 已经被取消,是否是唯一的选择来捕捉可能发生的情况?(抓到 感觉不对IllegalStateException)。

0 投票
2 回答
12664 浏览

c# - 发生“System.OperationCanceledException”类型的异常

我正在实现一个 Parallel.ForEach 循环来做一些工作,但是由于未处理的异常,我遇到了一个问题,而我认为我处理了取消。

为了解决这个问题,我在 winform 中做了一个简单的测试设置。它有一个开始按钮、一个取消按钮和一个输出标签。

编码:

当我运行程序并点击取消按钮(触发 button2_Click)时,我不断收到此错误:

mscorlib.dll 中出现“System.OperationCanceledException”类型的异常,但未在用户代码中处理

附加信息:操作已取消。

如果有这个异常的处理程序,程序可以安全地继续。

调试器突出显示 Parallel.ForEach 部分。但为什么???我以为我通过 CancellationToken 正确处理了取消。

ex 中的异常消息并没有让我清楚:“{“操作被取消。”}”呃......是的......这就是意图......

我在看什么?问候,

马蒂斯

0 投票
1 回答
375 浏览

c# - 为什么使用 Tasks.Wait() 回滚事件和使用取消令牌不

所以我不明白的是以下应用程序中发生了什么:

在第一个示例中,我认为程序应该执行该行:Console.WriteLine("Object is " + ob);然后当它中止时t.Wait(1000)没有任何行。

程序的输出是:

所以task.Wait()这只是一种突然关闭线程并回滚它所做的事情的方法吗?

0 投票
8 回答
124884 浏览

angularjs - 如何在 AngularJS 中取消 $http 请求?

给定 AngularJS 中的 Ajax 请求

如果启动另一个请求(例如相同的后端,不同的参数),取消该请求的最有效方法是什么。

0 投票
1 回答
2392 浏览

c# - 使用没有 Task.Wait() 的 cancelToken

我有winforms app一个长时间运行的任务和两个按钮。一键启动,一键停止。

当我按下开始按钮时,一个带有取消令牌的新任务就会启动。如果我按下停止按钮,取消令牌的取消方法就会被调用。

我希望 UI 始终可用,所以我在哪里放置 try, catch 块来完成这项工作。在我看到的所有例子中,他们都把它放在 t.Wait();

但是,如果我这样做,UI 会冻结,这就是我首先使用 Task 的原因,以便在执行任务时继续使用 ui。那么在不使用 Task.Wait 的情况下将 try catch 块放在哪里。

开始按钮:

停止按钮:

0 投票
0 回答
143 浏览

precision - 交替系列:浮点精度问题

我有一个x从测量中获得的数字列表。我需要计算数量

在此处输入图像描述

其中a是一个正数。不幸的是,总和的各个项可能非常大,并且每个项的符号由k和 的相关值确定x。这会导致取消和精度损失。

我找到了几种方法,例如补偿求和,但想检查我是否走在正确的道路上以及是否有更好的选择。

0 投票
2 回答
1563 浏览

c# - 可取消的远程进程和捕获输出

我正在尝试通过其 C# API 使用 PowerShell 来执行以下操作:

  1. 启动远程进程
  2. 终止他们
  3. 捕获远程进程的标准和错误输出(不是在进程终止之后,而是在生成该输出时)。
  4. 捕获远程进程的退出代码。

我正在使用以下 PowerShell 脚本启动远程进程:

我的原型的 C# 部分如下所示:

这确实捕获了本地运行的进程的输出,但这也适用于远程进程吗?(另一个不太重要的问题是:这如何适用于远程进程?.Net Remoting 是否以某种方式参与,我是否获得了 Process 的代理?)如果没有,有什么方法可以做到这一点?请注意,我需要输出,因为它正在生成,而不是在进程终止之后

这不会捕获进程终止。我已经尝试通过先捕获进程 ID 然后从不同的运行空间运行“停止进程”PowerShell 脚本来进行终止。那失败了,因为“管道已经在运行”并且管道无法并行运行......然后我尝试从 C# 调用 process.Kill(),这适用于我的本地进程,但 SO 报告它不适用于远程进程...然后我尝试调整我的 PowerShell 脚本,使其包含一个全局变量和一个等待循环,但我从来没有弄清楚如何在管道启动后设置该变量。添加的循环如下所示:

所以,那也失败了。关于我的场景的流程终止有什么建议吗?

PowerShell 甚至适合这个吗?(我们强烈反对我们之前尝试使用的 openSSH,因为它存在分叉问题)。

更新:我最终做的是调用(通过 C# 启动进程——“powershell”+“-Command ...”)到 powershell.exe,它被告知在远程执行脚本(调用命令)电脑。Powershell 默认捕获远程 PC 上产生的输出,因此我可以轻松获取 Process 实例的这个。当我想取消时,我杀死了本地进程。远程命令的返回码比较棘手。稍后我将发布命令、脚本和 C#-snippet。

0 投票
1 回答
184 浏览

caliburn.micro - 协程的“最终”操作

想象一下,我有一个协程,它使用LoaderCM 文档中包含的实现,我用它在我的页面上显示一个繁忙的指示器

现在想象一下,用户试图将一个已经存在的对象添加到数据存储中——在协程期间,“保存”操作自然会失败,这意味着协程将取消执行

如果发生这种情况,枚举器永远不会到达我Loader.Hide()隐藏忙碌指示器的调用 - 我想知道是否已经有一种机制允许IResult即使协程失败也可以执行某些实现?

例子:

如果协程在第二步中正常失败,忙碌指示符将保留在屏幕上,让用户没有机会更正错误并尝试重新保存(并停止与底层 UI 的任何交互!)

我可以扩展协程的实现,并让迭代器有一个标志,表明是否允许在出现错误时执行它们 - 只是想知道是否有人已经这样做了,或者它是否是我缺少的框架的一部分?