4

我正在.net WPF 中编程。

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

但是,一旦完成,没有明显的方法可以取消/中止呼叫。

有没有办法停止这样的工作?如果这需要库作者明确提供取消方法,那么有什么方法可以杀死这项工作,即使是不优雅的?我真的需要能够以某种方式阻止它,因为一项工作可能需要几个小时才能完成!

谢谢!

4

1 回答 1

3

如果实现不包含允许取消的特定代码,那么您很可能无法取消它。并非所有事情都可以在逻辑上完全取消,尤其是在涉及外部资源的情况下。但是,如果取消它的代码根本没有被编写。.您可以尝试随机杀死线程,但这会破坏您的进程-基本上这与决定中途杀死整个进程相同。它会停止工作,但如果它不是事务性的,它可能会使事情变得一团糟。

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

  • 向第 3 方索要支持的取消 API
  • 除非您确定,否则不要启动它
于 2013-05-11T09:22:58.917 回答