【发布时间】:2013-05-11 17:22:58
【问题描述】:
我正在.net WPF 中编程。
我有一个(第三方)API,它实现了 Begin/End 异步调用模式。 BeginWork() 函数返回一个 IAsyncResult。
但是,一旦完成,没有明显的方法可以取消/中止调用。
有没有办法停止这样的工作?如果这需要库作者明确提供取消方法,那么有什么方法可以杀死这项工作,即使是不优雅的?我真的需要能够以某种方式阻止它,因为一项工作可能需要几个小时才能完成!
谢谢!
【问题讨论】:
-
那么,它是哪个特定的 API?但是:如果他们不公开取消,我不会认为您可以取消它。
-
@ilansch 我不清楚 WCF 帖子是否一定适用于此...有很多 async / IAsyncResult API,它们的行为不同
-
这是亚马逊的 S3 上传。但是我昨天就那个图书馆提出了一个具体的问题,但没有得到答案。所以我转而想到了一种通用的方法来终止异步任务。 stackoverflow.com/questions/16485629/…
-
理论上你可以create a separate AppDomain在其中运行线程,然后你就可以关闭整个应用程序域。但这需要大量的工作和communicating between app domains needs WCF 或一些类似的机制。