【问题标题】:Async Task Timeout?异步任务超时?
【发布时间】:2010-11-29 09:11:40
【问题描述】:

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

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

目前的解决方案:

  1. 使用 AutoResetEvent(或 ManualResetEvent) 与 匿名方法使用 .WaitOne(x).
  2. 使用线程/BackgroundWorker 与定时器相结合。如果计时器 在线程停止它之前命中它的处理程序,therad 超时。

两种方法都可以正常工作,但我认为 4.0 有更好的方法。

建议?

【问题讨论】:

标签: multithreading c#-4.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    相关资源
    最近更新 更多