繁体   English   中英

取消异步调用(IAsyncResult)

[英]Cancel an asynchronous call (IAsyncResult)

我在.net WPF编程。

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

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

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

谢谢!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM