取消异步调用(IAsyncResult)

时间:2013-05-11 08:52:03

标签: c# wpf

我在.net WPF编程。

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

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

有没有办法让这样的工作停止?如果这需要库作者明确提供取消方法,那么什么是杀死这个工作的方法,甚至是不合理的?我真的需要能够以某种方式阻止它,因为单个工作可能需要数小时才能完成!

谢谢!

1 个答案:

答案 0 :(得分:3)

如果实现不包含允许取消的特定代码,那么很可能无法取消。并非一切都可以在逻辑上被彻底取消,特别是如果它涉及外部资源。但是如果取消它的代码还没有编写。 你可以尝试随机杀死线程,但这会让你的过程失败 - 基本上这就像决定在整个过程中途杀死一样。它会停止工作,但如果它不是交易的话,它可能会让事情变得完整。

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

  • 向第三方询问支持的取消API
  • 除非您确定
  • ,否则不要启动它