问题标签 [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 回答
15876 浏览

c#-4.0 - 错误:操作已取消

我正在使用此代码片段执行带有取消令牌的异步查询:

但是,当操作被取消时,cancellationToken.ThrowIfCancellationRequested();会引发异常。我知道这条线应该是这个东西。但是,在开发环境中,异常会导致视觉工作室中断。我怎样才能避免这种情况?

0 投票
2 回答
1021 浏览

c - 取消 pthread 和 printf 行为

这是一个 pthread 取消的代码示例:

我编译:

执行时,有时会 sleep(1).

有时这个数字是重复的:

有时不是:

如果 I fflush(stdout)before sleep(1),则立即打印附加号码。

printf取消线程时如何避免这种奇怪的行为?

谢谢你。

0 投票
1 回答
2974 浏览

.net - 实现扩展方法 WebRequest.GetResponseAsync 并支持 CancellationToken

这里的想法很简单,但实现有一些有趣的细微差别。这是我想在.NET 4中实现的扩展方法的签名。

这是我最初的实现。根据我的阅读,Web 请求可能需要因 timeout 而被取消。除了该页面上描述的支持之外,request.Abort()如果通过CancellationToken.

我的问题很简单但很有挑战性。当与 TPL 一起使用时,此实现实际上会按预期运行吗?

0 投票
2 回答
1418 浏览

linux - POSIX线程取消什么时候不是立即的?

POSIX 为线程取消类型指定了两种类型:PTHREAD_CANCEL_ASYNCHRONOUSPTHREAD_CANCEL_DEFERRED(由 设置pthread_setcanceltype(3))确定何时pthread_cancel(3)应该生效。根据我的阅读,POSIX 手册页对这些内容没有太多说明,但 Linux 手册页对以下内容进行了说明PTHREAD_CANCEL_ASYNCHRONOUS

线程可以随时取消。(通常情况下,收到取消请求后会立即取消,但系统不保证这一点。)

我很好奇系统的含义并不能保证这一点。我可以很容易地想象这发生在多核/多 CPU 系统中(在上下文切换之前)。但是单核系统呢:

  1. 当请求取消并启用取消(pthread_setcancelstate(3))并将取消类型设置为时,我们是否可以不立即取消线程PTHREAD_CANCEL_ASYNCHRONOUS
  2. 如果是,在什么条件下会发生这种情况?

我主要对 Linux (LinuxThreads / NPTL) 感到好奇,但也更普遍地对符合 POSIX 标准的查看此取消业务的方式感到好奇。

更新/澄清:这里真正的实际问题是在调用pthread_cancel()目标线程启用取消并设置为类型后立即销毁的资源的使用PTHREAD_CANCEL_ASYNCHRONOUS!所以关键是:在这种情况下,被取消的线程在上下文切换后继续正常运行的可能性很小(即使是很短的时间)?

感谢 Damon 的回答,减少了与下一个上下文切换相关的信号传递和处理问题。

Update-2:我回答了我自己的问题,指出这是一个不好的问题,底层程序设计应该在根本不同的概念级别上解决。我希望这个“错误”的问题对其他想了解异步取消奥秘的人有用。

0 投票
2 回答
21091 浏览

ios - 通过默认 iPhone 耳机进行主动降噪

我们想要创建一个应用程序,该应用程序将使用默认的 iPhone 耳机实现主动降噪。即使用iPhone耳机麦克风接收外部音频并进行180度相移。最后,通过默认耳机扬声器播放倒置的声音以消除外部声音(主动降噪)。

参考:http ://electronics.howstuffworks.com/gadgets/audio-music/noise-canceling-headphone.htm

这在 iPhone App 上可行吗?

0 投票
1 回答
1523 浏览

c - 降噪设置 - 智能组合麦克风的信号

我用两个麦克风和两个不同的麦克风前置放大器构建了一个噪音消除装置,这些前置放大器用于立体声录音的两个不同通道。

这是一个示例

http://filestore.to/?d=U5FN2IH96K

我试过了

当魔法发生在

但这并不能消除它周围的噪音,它所做的只是产生噼啪声。

我怎么能用我的设置来完成这个任务呢?我更喜欢实用的解决方案,而不是“阅读只有论文作者理解的论文”。

当我们这样做时,我如何标准化最终的单声道输出以使其尽可能响亮而不削波?

0 投票
0 回答
259 浏览

c# - 在 C# 中取消长时间运行的任务

我正在做一个项目,我们有很多单独的组件正在运行,我的议程是根据用户输入取消中间的组件进程。

例如:我有 6 个 Windows 服务来完成所有工作,还有 1 个 Windows 服务负责分配工作。所以一旦工作被发送到工作窗口服务,就无法控制它。这个工作窗口服务做一些耗时的任务,调用几个函数,与数据库交互等。我想取消工作之间的任务。

我们用于取消的传统方法将不再适用于... 1. 我没有迭代任何可以持续检查取消标志的循环。2. 由于组件是完全独立的,一旦它们开始工作,就会创建该组件的新实例,并且无法将任何值传递给该组件。

提前致谢。

0 投票
1 回答
433 浏览

paypal - 从商家网站取消 PayPal 订阅

我们在我们的网站中集成了一个贝宝支付系统,因此人们可以注册并选择订阅。随着付款的进行,订阅部分工作正常,IPN 访问我们的网站并更新我们的系统。现在我们希望用户能够从我们的网站中取消他们的订阅,所以我们有一个自定义的取消按钮,当客户点击它时,应该向贝宝发送请求并取消他们的订阅。我们设法在沙盒测试系统上进行了此操作,但是由于我们已将该系统带入实时测试,因此我们无法使取消功能正常工作。所以目前当用户点击取消按钮时,我认为贝宝没有收到通知,因此没有从贝宝收到 IPN。

您知道我们需要什么信息才能从我们的网站取消订阅吗?我知道有一种方法可以让用户登录贝宝并取消他们的订阅,或者我们可以登录我们的贝宝并取消他们的订阅,但我们希望它可以在我们的网站上运行。

请帮忙!

谢谢。

0 投票
1 回答
232 浏览

c# - BackGroundworker Cancellation 不适用于 wbadmin.exe

好的,我正在使用:C# 和 Windows 窗体

我有一个背景工作,它有效。现在我想创建一个取消按钮,但即使我告诉它取消并且后台接受了它,它也会继续运行它触发的可执行文件。

我有一个带有以下代码的取消按钮

后台工作人员代码在这里:

当我单击按钮取消时,它会执行操作,但备份会继续进行,因为 Richtextbox 最终会显示整个内容

操作已取消
创建指定用于备份的卷的卷影副本...创建指定用于备份的卷
的卷影副本...创建指定用于备份的卷的卷影副本...
创建指定用于备份的卷的卷影副本...
卷 SYSTEM (1.99 GB) 的备份成功完成。
创建卷 OS(C:) 的备份,已复制 (0%)。
创建卷 OS(C:) 的备份,已复制 (0%)。
创建卷 OS(C:) 的备份,已复制 (8%)。
创建卷 OS(C:) 的备份,已复制 (55%)。
创建卷 OS(C:) 的备份,已复制 (82%)。
卷 OS(C:) 的备份已成功完成。
备份操作成功完成。
备份操作总结:
------------------
卷 SYSTEM (1.99 GB) 的备份成功完成。
卷 OS(C:) 的备份已成功完成。

我究竟做错了什么?

0 投票
0 回答
1173 浏览

workflow - finally 块在 try 块被取消时运行

在我的 TFS2012 构建工作流程中,我有一个 Parallel 活动,并且在一些分支中我有 try-finally 活动。如果一个分支失败(例如,使用 CodeAnalysis 编译发现 CodeAnalysis 错误),则其他分支将被取消。但是,如果一个分支在一个包含块的 try 块内finally,则 finally 块运行,如果花费超过 30 秒,则取消失败,并显示:

BuildWarning: The workflow instance accepted a stop request but did not complete within 00:00:29.9922015. This may indicate an AsyncCodeActivity is active that does not support cancellation.

我想避免这样的消息,所以:

  1. 我可以以某种方式进行try-finally最终运行的活动,当在内部引发异常时try,而不是在整个事情被取消时?
  2. 如果没有,我想if在块内添加一个finally工作流已被取消的块,而不是做长时间的事情。我如何知道工作流已被取消?

编辑:这种模式甚至出现在 TFS2012 附带的 DefaultTemplate.11.1.xaml 中 - CopyDirectory 可能需要很长时间,但它位于TryCatch.Finally