如果在时间跨度之前满足条件,则取消Task.Delay(TimeSpan)

时间:2017-06-05 19:29:50

标签: c# multithreading task

我有下面的代码等待300毫秒,然后验证条件,即isMatch为真。

await Task.Delay(TimeSpan.FromMilliseconds(300));

if (isMatch)
{
//do something
isMatch = false;
}
else{

}

如果在300毫秒时间结束之前isMatch变量值为True,我怎么能避免这个300毫秒的常量等待,换句话说,我的代码应该根据先发生的任何事件执行,即isMatch值为true或300 ms结束了。

App有一个定时器,每100 ms运行一次,负责将isMatch的值设置为True。

1 个答案:

答案 0 :(得分:3)

您通过将Task.Delay传递给CancellationToken来取消isMatch

因此,只要您的代码将true设置为CancellationTokenSource.Cancel,也请将其调用SELECT t.INS_RQMT_PRODCT_NO, t.NEW_DEPT_NO FROM SUBMISSION_OBJECT.SEGMENTATION_REF t WHERE t.INS_RQMT_PRODUCT_NO IN ('6228506')