我開發了一個程式Threading.Timer,用于在 30 秒后呼叫方法。
該方法正在被呼叫,它正在作業,但我想獲取該事件,以便我可以知道 30 秒還剩下多少秒。
我需要一種每秒鐘都會觸發的滴答事件。這樣我也可以顯示剩余的秒數。這是我的代碼:
Timer timerObj;
timerObj = new Timer(UpdateUI, null, Timeout.Infinite, Timeout.Infinite);
timerObj.Change(30000, Timeout.Infinite);
public void UpdateUI(object state)
{
ShowQR= false;
}
我怎樣才能倒計時?
uj5u.com熱心網友回復:
這是您實施 Evk 建議的方式:
Timer timerObj;
Stopwatch stopwatch;
...
timerObj = new Timer(UpdateUI, null, Timeout.Infinite, Timeout.Infinite);
timerObj.Change(1000, Timeout.Infinite);
stopwatch = Stopwatch.StartNew();
public void UpdateUI(object state)
{
if (stopwatch.Elapsed < TimeSpan.FromSeconds(30))
{
timerObj.Change(1000, Timeout.Infinite);
return;
}
stopwatch.Restart();
ShowQR= false;
}
請注意如何Stopwatch在呼叫timerObj.Change()以啟動計時器運行的同時啟動 。
還要注意計時器是如何設定為每秒觸發一次,而不是每 30 秒觸發一次。
然后在計時器處理程式中,您只需檢查Stopwatch- 如果不到 30 秒,則只需回傳;否則,每 30 秒做一次你想做的事情,然后(重要!)重新啟動Stopwatch.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336749.html
