问题标签 [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.
android-contentprovider - ContentProvider:如何取消先前对 delete() 的调用?
我正在使用自定义ContentProvider。对于查询,有一个CancellationSignal (API 16+) 可用于取消先前对query()的调用。
我的问题:我怎样才能存档delete()
?为了澄清起见,我的自定义提供商管理 SD 卡上的文件,因此我希望能够取消我的提供商内部的删除操作。
.net - 如果无法轮询 CancellationToken,则提供取消
这是一个阻塞调用者线程但不支持取消的方法的(愚蠢的)示例:
在最坏的情况下,调用此方法需要 17 小时才能返回。假装我无权访问此方法的源代码。如何将调用包装在采用 CancellationToken 的方法中?
目标是让WorkUntil5()
运行直到请求取消。此时应使用任何可能的方式终止呼叫。
这是我自己想出的最好方法。它使用任务,但它仍然阻塞调用者的线程。感觉有些不对劲。mres.Set()
认为一旦第一个呼叫返回,应该有更好的呼叫方式。
java - 检查 Java 定时器是否被取消
为什么没有java.util.Timer对象isCancelled
的方法?
如果 Timer 没有被取消,我想安排一个任务,如果它被取消,我想直接运行它(在同一个线程上)。
IllegalStateException
如果 Timer 已经被取消,是否是唯一的选择来捕捉可能发生的情况?(抓到 感觉不对IllegalStateException
)。
c# - 发生“System.OperationCanceledException”类型的异常
我正在实现一个 Parallel.ForEach 循环来做一些工作,但是由于未处理的异常,我遇到了一个问题,而我认为我处理了取消。
为了解决这个问题,我在 winform 中做了一个简单的测试设置。它有一个开始按钮、一个取消按钮和一个输出标签。
编码:
当我运行程序并点击取消按钮(触发 button2_Click)时,我不断收到此错误:
mscorlib.dll 中出现“System.OperationCanceledException”类型的异常,但未在用户代码中处理
附加信息:操作已取消。
如果有这个异常的处理程序,程序可以安全地继续。
调试器突出显示 Parallel.ForEach 部分。但为什么???我以为我通过 CancellationToken 正确处理了取消。
ex 中的异常消息并没有让我清楚:“{“操作被取消。”}”呃......是的......这就是意图......
我在看什么?问候,
马蒂斯
c# - 为什么使用 Tasks.Wait() 回滚事件和使用取消令牌不
所以我不明白的是以下应用程序中发生了什么:
在第一个示例中,我认为程序应该执行该行:Console.WriteLine("Object is " + ob);
然后当它中止时t.Wait(1000)
没有任何行。
程序的输出是:
所以task.Wait()
这只是一种突然关闭线程并回滚它所做的事情的方法吗?
angularjs - 如何在 AngularJS 中取消 $http 请求?
给定 AngularJS 中的 Ajax 请求
如果启动另一个请求(例如相同的后端,不同的参数),取消该请求的最有效方法是什么。
c# - 使用没有 Task.Wait() 的 cancelToken
我有winforms app
一个长时间运行的任务和两个按钮。一键启动,一键停止。
当我按下开始按钮时,一个带有取消令牌的新任务就会启动。如果我按下停止按钮,取消令牌的取消方法就会被调用。
我希望 UI 始终可用,所以我在哪里放置 try, catch 块来完成这项工作。在我看到的所有例子中,他们都把它放在 t.Wait();
但是,如果我这样做,UI 会冻结,这就是我首先使用 Task 的原因,以便在执行任务时继续使用 ui。那么在不使用 Task.Wait 的情况下将 try catch 块放在哪里。
开始按钮:
停止按钮:
precision - 交替系列:浮点精度问题
我有一个x
从测量中获得的数字列表。我需要计算数量
其中a
是一个正数。不幸的是,总和的各个项可能非常大,并且每个项的符号由k
和 的相关值确定x
。这会导致取消和精度损失。
我找到了几种方法,例如补偿求和,但想检查我是否走在正确的道路上以及是否有更好的选择。
c# - 可取消的远程进程和捕获输出
我正在尝试通过其 C# API 使用 PowerShell 来执行以下操作:
- 启动远程进程
- 终止他们
- 捕获远程进程的标准和错误输出(不是在进程终止之后,而是在生成该输出时)。
- 捕获远程进程的退出代码。
我正在使用以下 PowerShell 脚本启动远程进程:
我的原型的 C# 部分如下所示:
这确实捕获了本地运行的进程的输出,但这也适用于远程进程吗?(另一个不太重要的问题是:这如何适用于远程进程?.Net Remoting 是否以某种方式参与,我是否获得了 Process 的代理?)如果没有,有什么方法可以做到这一点?请注意,我需要输出,因为它正在生成,而不是在进程终止之后。
这不会捕获进程终止。我已经尝试通过先捕获进程 ID 然后从不同的运行空间运行“停止进程”PowerShell 脚本来进行终止。那失败了,因为“管道已经在运行”并且管道无法并行运行......然后我尝试从 C# 调用 process.Kill(),这适用于我的本地进程,但 SO 报告它不适用于远程进程...然后我尝试调整我的 PowerShell 脚本,使其包含一个全局变量和一个等待循环,但我从来没有弄清楚如何在管道启动后设置该变量。添加的循环如下所示:
所以,那也失败了。关于我的场景的流程终止有什么建议吗?
PowerShell 甚至适合这个吗?(我们强烈反对我们之前尝试使用的 openSSH,因为它存在分叉问题)。
更新:我最终做的是调用(通过 C# 启动进程——“powershell”+“-Command ...”)到 powershell.exe,它被告知在远程执行脚本(调用命令)电脑。Powershell 默认捕获远程 PC 上产生的输出,因此我可以轻松获取 Process 实例的这个。当我想取消时,我杀死了本地进程。远程命令的返回码比较棘手。稍后我将发布命令、脚本和 C#-snippet。
caliburn.micro - 协程的“最终”操作
想象一下,我有一个协程,它使用Loader
CM 文档中包含的实现,我用它在我的页面上显示一个繁忙的指示器
现在想象一下,用户试图将一个已经存在的对象添加到数据存储中——在协程期间,“保存”操作自然会失败,这意味着协程将取消执行
如果发生这种情况,枚举器永远不会到达我Loader.Hide()
隐藏忙碌指示器的调用 - 我想知道是否已经有一种机制允许IResult
即使协程失败也可以执行某些实现?
例子:
如果协程在第二步中正常失败,忙碌指示符将保留在屏幕上,让用户没有机会更正错误并尝试重新保存(并停止与底层 UI 的任何交互!)
我可以扩展协程的实现,并让迭代器有一个标志,表明是否允许在出现错误时执行它们 - 只是想知道是否有人已经这样做了,或者它是否是我缺少的框架的一部分?