观看异步任务持续时间

时间:2016-03-09 14:34:42

标签: c# .net task-parallel-library

我正在使用

Task task = new Task(action);
task.Start();

很多地调用第三方库的API。通常这项任务不会超过一秒钟。

但是我怀疑有时候任务是挂起的,因此会造成线程泄漏。

有没有办法从外面检查这项任务的执行时间是否超过x秒?

我想在任务中生成另一个任务/计时器来测量它,或者永久地轮询Task.Status,但也许有更优雅的方式?

2 个答案:

答案 0 :(得分:2)

你试过了吗?

if(task.Wait(new TimeSpan(0,0,x)))
{
  //completed in x seconds
}
else
{
  //didn't complete
}

答案 1 :(得分:1)

Stopwath stop = new Stopwatch();
stop.Start();
Task task = new Task(action);
task.ContinueWith(()=>{stop.Stop();})
task.Start();

然后你就可以在Elapsed属性中看到任务花了多少时间。