我正在使用
Task task = new Task(action);
task.Start();
很多地调用第三方库的API。通常这项任务不会超过一秒钟。
但是我怀疑有时候任务是挂起的,因此会造成线程泄漏。
有没有办法从外面检查这项任务的执行时间是否超过x秒?
我想在任务中生成另一个任务/计时器来测量它,或者永久地轮询Task.Status
,但也许有更优雅的方式?
答案 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属性中看到任务花了多少时间。