『QQ:1353814576』

C#如何指定异步线程超时时间 并在超时后取消掉当前任务


使用CancellationTokenSource 对线程指定超时时间 若超时就取消掉当前任务

应用场景:某个任务线程需要消耗一定时间 但超过一定时间后要终止抛弃掉 避免堵塞其他作业

CancellationTokenSource TaskCancellationToken = new CancellationTokenSource();
//创建一个任务线程 异步处理
var t = Task.Factory.StartNew(() =>
{
     //你要执行的任务       
     System.Threading.Thread.Sleep(30*1000);     //模拟超时
 });
int Timeout=20*1000;//20秒超时时间
//判断是否是超时结束
if (!t.Wait(Timeout, EchoCancellationToken.Token))
{
       //线程已经超时 取消线程
      TaskCancellationToken.Cancel();
} else {
//运行的时间内作业正常结束

}