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

delphi - 主动降噪

我已经编写了一个语音识别程序,但我无法通过计算机播放音乐来让麦克风听到我的声音。我需要能够从进入麦克风的声音中过滤掉离开扬声器的声音的软件。

是否有软件或组件(用于 Delphi)可以解决我的问题?

0 投票
1 回答
2040 浏览

sockets - boost::asio::io_service::run() 在我调用 boost::asio::io_serive::stop() 时没有退出

嗨,我编写了一个使用异步套接字函数的简单应用程序。我在关闭套接字时遇到了一些问题。

async_connect在调用套接字之前,我正在使用 5 秒计时器。在某些情况下,连接没有发生并且计时器到期。当计时器到期时,我正在关闭套接字tcp_socket.close()boost::asio::error::operation_aborted但问题是当我尝试取消而不是关闭时,我的连接回调处理程序根本没有调用错误。接下来所有异步连接调用都会发生同样的事情。

尽管我正在关闭 tcp 套接字并销毁创建线程上的 client_session 对象 join() 调用没有出现意味着 io_service::run() 仍在运行而不退出......:-( 我不知道这是为什么发生...尝试了很多其他方法仍然面临同样的问题。

我没有得到什么问题,所有的建议和解决方案将不胜感激。

我的真实代码看起来像这样。

0 投票
2 回答
6383 浏览

exception-handling - 如何在不抛出 TaskCanceledExceptions 的情况下等待任务?

我有一个创建一些任务的方法,然后在返回之前使用WaitAll等待它们。问题是,如果这些任务被取消,那么 WaitAll 会抛出一个包含大量TaskCanceledException的AggregateException

这意味着 WaitAll 将在两种不同的情况下抛出异常:

  • 表示真正错误的异常。这意味着存在我们不知道如何处理的情况;它们需要作为未处理的异常传播,直到它们最终终止进程。
  • 指示用户单击取消按钮的异常。这意味着任务被取消和清理,程序应该继续正常运行。

后者完全符合令人烦恼的异常的定义:它是在完全非异常情况下抛出的异常,因此我必须捕获它才能恢复正常的控制流。幸运的是,它很容易被抓住,对吧?只需添加catch (AggregateException)- 哦等等,这与出现致命错误时抛出的类型相同。

我确实需要在返回之前等待任务完成运行(我需要知道他们不再使用他们的数据库连接、文件句柄或其他任何东西),所以我确实需要 WaitAll 或类似的东西。如果任何任务出现故障,我确实希望这些异常作为未处理的异常传播。我只是不想取消例外。

如何防止WaitAll为取消的任务引发异常?

0 投票
1 回答
96 浏览

.net - 在旧框架版本中使用的库中支持更新的 .NET 框架功能

我有一个在 .NET 3.5 下编译的异步库,因为它被 .NET 3.5 应用程序使用,但是如果有人想传入一个,我希望能够处理 .NET 4.0 CancellationTokens。为了包括 .NET 4.0东西,我必须打破与 .NET 3.5 的兼容性。到目前为止,我提出的唯一选择是只允许传入“对象”然后使用反射,但这会导致丑陋的公共接口......我想确保客户端代码传入正确编译时的对象类型,而不是运行时。

有什么方法可以在编译时绑定 .NET 4.0 对象,而不会对消费者应用程序引入不必要的依赖?说“如果有就使用这个功能,如果没有就跳过它”?

0 投票
2 回答
9573 浏览

c# - 如何取消 BlockingCollection 上的 GetConsumingEnumerable()

在下面的代码中,我使用 CancellationToken 在生产者不生产时唤醒 GetConsumingEnumerable() 并且我想跳出 foreach 并退出任务。但我没有看到 IsCancellationRequested 被记录,并且我的 Task.Wait(timeOut) 等待完整的超时时间。我究竟做错了什么?

之后...

0 投票
1 回答
480 浏览

c++ - 在指定 C++ 异常和 pthread 取消的交互方面是否有任何进展?

如今,GNU C 库使用 DWARF2 展开来取消 pthread,因此 C++ 异常和 pthread 取消清理处理程序都通过公共调用框架展开过程调用,该过程在必要时为自动对象调用析构函数。但是,据我所知,仍然没有标准指定(POSIX)线程和 C++ 之间的交互,并且可能希望可移植的应用程序应该假设从取消清理上下文中抛出异常与调用一样longjmp未定义其中,取消具有具有非平凡析构函数的实时自动对象的线程也是未定义的行为。

是否有任何正在进行的标准化过程来解决这种交互,或者它是否有望在未来得到很好的定义?C++11 在其线程支持中是否有与 POSIX 线程取消类似的概念?

0 投票
1 回答
344 浏览

java - 基于服务器的 SwingWorker 不会停止

我有一个布尔变量来控制服务器的执行(启动/停止):

私人布尔生态=真;

这是我的课:

当我单击按钮将变量传递给 false 以使我的线程退出无限循环时,没有任何反应:

我也没有什么新东西取而代之ecoute=false;... sw.calcel(true);

有什么建议吗?

0 投票
2 回答
779 浏览

c# - TPL 如何正确取消任务

我有以下任务

在方法DuplicateSqlProcsFrom(token, mainForm.mainConnection, strDbA, strDbB)中,我有标准的取消检测:

取消事件是主窗体上的按钮单击,在单击事件中我有:

但我似乎可以捕捉到AggregateException,我在这里做错了什么?

编辑:在方法DuplicateSqlProcsFrom(token, mainForm.mainConnection, strDbA, strDbB)中我可以捕捉到,OperationCancelledException但我对如何处理它感到困惑。我看到的所有示例都在导致取消的事件中处理 UI 线程上的“操作取消...”等的打印。捕获取消并将其传递回 UI/调用线程的最佳方法是什么?

0 投票
2 回答
9237 浏览

c# - 如何在Backgroundworker中取消DoWork

我知道这不是关于取消 BackGroundWorker 的第一个问题,但我没有找到解决问题的答案。
我有一个发送文件的方法..我使用backgroundworker来调用它..
那么我怎么能在发送文件的中间取消backgroundworker..我的意思是我应该放在哪里

这是代码:

发送方法:

我应该在 send 方法的 while() 循环中检查 CancellationPending .. 但我无法从此方法中访问 [e.Cancel] 的后台工作程序 .. 我该怎么办?

0 投票
3 回答
2909 浏览

c# - Thread.Abort() 卡在 NetworkStream.Read 上?

我有一个文件传输应用程序(服务器-客户端)......在发送文件时,我想启用取消。
客户端取消它由后台工作者工作的 SendFile 方法,然后它向服务器发送命令以取消其接收线程。
当服务器收到此命令时,它调用Stop 方法,但它停留在该行network.Read(data, 0, data.Length);

我怎样才能中止这个线程并最终进入而不会卡在 network.Read(..) 中?
提前致谢。