异步任务超时?

时间:2010-11-29 09:11:40

标签: multithreading c#-4.0

我再次面临一项非常普遍的任务。我已经解决了几次这个问题,但现在我正在寻找一种更“强烈优雅”的方式 - 你能提供一些意见吗?

情况:
我有一个方法,我想运行“半异步”。换句话说:启动它并等待给定时间x。如果那个方法没有完成(“超时”),我想用一些清理程序继续我的代码。

到目前为止的解决方案:

  1. 使用AutoResetEvent(或 ManualResetEvent)结合了 annonymus方法使用 .WaitOne(x)的点。
  2. 使用线程/ BackgroundWorker 结合计时器。如果是计时器 在线程停止之前命中它的处理程序,therad超时。
  3. 这两个appraochs工作正常,但我想有一个更好的方法4.0。

    建议?

1 个答案:

答案 0 :(得分:6)

来自Task.Wait(Timeout)Task Parallel Library能做你想做的事吗? (您可能希望将此与取消令牌结合使用,以在超时发生后取消任务。)