我知道有多种方法可以限制任务在 .Net 下运行的时间,我想知道我是否遗漏了其他任何方法,或者对我以前使用的方法进行了修改/改进。
在我不清楚方法论的确切功能的地方,我已经包含了有关它的问题。
我知道的现有方法虽然不一定自己使用:
- 创建一个
Thread
,轮询它完成一段时间然后终止线程。这个解决方案不是很好,因为它依赖于ThreadAbortException
有点讨厌的 's,如果我记得你不能保证你的代码会在哪里退出,即它可能会留下未管理的资源在使用等。 - 使用该
IAsyncResult
模式,问题在于您可以等待一段时间,但没有一种简单的方法可以表明您希望中止请求,因此您必须依靠设置布尔标志(或类似的) 在异步代码中检查并导致它停止。这里的问题是,如果异步代码卡在代码的某个部分中,它可能会在实际终止之前继续运行一段时间。 - 我经常看到人们推荐
BackgroundWorker
异步的东西,但你可以在 ASP.Net 下使用它(我假设是这样),它是否有一种简单的方法可以在一段时间后终止异步进程? - 使用 .Net 4.0 中的任务 API(目前我所有的工作都被限制在 .Net 3.5 中,所以不是我的选择)。从快速阅读 MSDN 文档看来,您可以使用 轻松取消任务,
CancellationToken
但取消生效的速度有多快,是否确保finally
调用任何块。
欢迎所有解决方案/建议/方法