怎么样在异步超时的时候,结束异步线程

.Net技术 码拜 8年前 (2016-09-18) 1033次浏览
代码如下:
Func<IJob, string, IResult> fun = Component.JobProcessor.HandleJob;
if (asyncResult.AsyncWaitHandle.WaitOne(timeOut, true))
{
…………………………
}
else {

………………..
}
………………….
HandleJob里面有个串口,本人想在超时的情况把这个串口关掉,问一下怎么解决.

解决方案

30

1.串口本身有超时事件,你可以直接在超时事件里处理
2.假如不想用串口本身的超时,那么可以这样写(假如你是net4.5)以上
var cts=CancellationTokenSoruce(TimeSapn.FromSeconds(5)); //5秒后自动发出取消指令
var token=cts.Token;
await Task.Delay(TimeSpan.FromSeconds(10),token); //模拟一下,本身task运行10秒,但5秒后被上面发出的取消指令取消了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样在异步超时的时候,结束异步线程
喜欢 (0)
[1034331897@qq.com]
分享 (0)