2017-06-05 88 views
-1

我有下面的代码,它等待300毫秒,然后验证条件,即isMatch为真。如果在时间段之前满足条件,则取消Task.Delay(TimeSpan)

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

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

} 

我怎样才能避免这种300毫秒不变等待时isMatch变量的值是300毫秒的时间之前,真正的过上换句话说,我的代码应该执行基于任何事件的发生第一即或者isMatch值是真的还是300毫秒结束了。

应用程序有一个计时器,每运行100 ms后负责将isMatch的值设置为True。

+1

'isMatch'如何设置?我们无法告诉您,如果您设置了“isMatch”,除非您向我们展示如何设置,否则您可以尽早停止等待。 –

+0

应用程序有一个计时器,每100毫秒后负责设置此值。 – San9211

+1

显示不告诉,编辑您的问题,并包括显示计时器的代码 –

回答

3

您通过传入CancellationToken来取消Task.Delay

因此,无论何时您的代码设置isMatchtrue,也请拨打CancellationTokenSource.Cancel

+0

感谢您的快速回复。我会尝试这种方法。 – San9211