2017-06-05 31 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