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