【发布时间】:2012-03-12 13:04:20
【问题描述】:
在我的 Windows 窗体应用程序中,我需要调用第三方数学库 (Accord.NET) 的长时间运行操作。在计算过程中,我想让我的 GUI 保持响应,并让用户可以取消长时间运行的操作。
有没有办法在后台线程中执行该功能并让用户可以取消它?请注意,我想调用的长时间运行的函数位于外部库中,并且不接受CancellationToken(否则我可以轻松使用ThreadPool 的QueueUserWorkItem,例如)。所以我正在寻找一种非合作取消操作的方法。
【问题讨论】:
-
为什么不使用托管线程?
-
唯一安全的方法是在单独的 AppDomain 中运行该代码。
-
@HenkHolterman:你有如何在单独的 AppDomain 中执行函数的示例吗?而且我想创建和销毁一个新的 AppDomain 会涉及相当多的开销?
标签: c# multithreading asynchronous