取消异步调用IAsyncResult

本文关键字:IAsyncResult 调用 异步 取消 | 更新日期: 2023-09-27 18:13:10

我正在用。net WPF编程。

我有一个(第三方)API实现了Begin/End异步调用模式。BeginWork()函数返回一个IAsyncResult。

然而,没有明显的方法来取消/中止调用,一旦调用完成。

有办法让这样的工作停止吗?如果这需要库作者显式地提供一个cancel方法,那么有什么方法可以终止这个工作,即使是不得体的?我真的需要能够阻止它,因为一个单一的工作可能需要几个小时才能完成!

谢谢!

取消异步调用IAsyncResult

如果实现不包含允许取消的特定代码,那么很可能无法取消。并不是所有事情都可以在逻辑上干净利落地取消,尤其是涉及外部资源的事情。但如果取消它的代码还没有写好。你可以尝试随机终止线程,但这将导致你的进程失败——基本上,这与决定在中途终止整个进程是一样的。它会停止工作,但如果它不是事务性的,它可能会把事情弄得一团糟。

如果我是你,我会(其中之一):

  • 请求第三方提供支持的取消API
  • 不要启动它,除非你确定