代码如下:
Func<IJob, string, IResult> fun = Component.JobProcessor.HandleJob;
if (asyncResult.AsyncWaitHandle.WaitOne(timeOut, true))
{
…………………………
}
else {
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秒后被上面发出的取消指令取消了
2.假如不想用串口本身的超时,那么可以这样写(假如你是net4.5)以上
var cts=CancellationTokenSoruce(TimeSapn.FromSeconds(5)); //5秒后自动发出取消指令
var token=cts.Token;
await Task.Delay(TimeSpan.FromSeconds(10),token); //模拟一下,本身task运行10秒,但5秒后被上面发出的取消指令取消了