C#如何指定异步线程超时时间 并在超时后取消掉当前任务
c#CancellationTokenSource线程超时
编程开发
257
0 积分
使用CancellationTokenSource 对线程指定超时时间 若超时就取消掉当前任务
C#如何指定异步线程超时时间 并在超时后取消掉当前任务
应用场景:某个任务线程需要消耗一定时间 但超过一定时间后要终止抛弃掉 避免堵塞其他作业
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 {
//运行的时间内作业正常结束
}