2017-04-06 91 views
0

在我的應用程序中,我定義了一個計時器並將時間間隔設置爲x秒。 之後,當發生'click'事件時,我想增加運行計時器y秒多一點。如何增加運行計時器

我該怎麼做?

的代碼示例:

private static Timer sTimer = new Timer(); 
sTimer.Interval = 50000; 

當事件被調用我想要做這樣的事情:

sTimer.Interval = timeLeftInms + 5000; 
+0

那麼,什麼是錯的這個解決方案? –

+0

timeLeftInms不存在 –

+0

定時器對象中沒有可返回剩餘時間的屬性。 –

回答

3

你應該創建一個自定義的Timer,它繼承自System.Timers。

有一個private Stopwatch stopWatch = new Stopwatch();私人會員。

On Timer.Start:stopWatch.Start();

On Timer.Tick:stopWatch.Reset();

Timer.Interval 
      set { 
        _timer.Interval = _timer.Interval - 
        stopwatch.Elapsed.Miliseconds + value; 
       } 
+0

好主意,什麼微軟沒有做屬性的情況下? –

+0

好吧,他們不能真正想到人們想要使用計時器的每個場景,所以他們爲你提供了基本知識,並且能夠修改它 –

+0

我認爲剩下的時間是需要的;)非常有用 –

2

有一個計時器,更新系統/視圖/不管在定期間隔,如每250毫秒

當您的系統開始填充日期時間來保存該值時,第一個事件將快樂恩...好像DateTime.Now + TimeSpan.FromSeconds(20)

更新日期時間表示變量,而不是你的計時器...

時間左側是你的變量和DateTime.Now

+0

解決問題,但額外的對象不是最好的代碼解決方案(需要始終保持),如果我有不止一個人需要與自己的時間跨度... –

+0

我可以做的是計時器對象的擴展方法和在這種情況下,使用你的解決方案添加wxample sTimer.TimeLeft –

+0

如果有疑問,將你的日期時間存儲在字典中,並將用戶相應的定時器作爲密鑰 – DarkSquirrel42

0

之間的區別只要做

sTimer.Interval + = 5000;

裏面的點擊事件

+0

interval是定時器在你的例子中runnung的時間,如果我有定時器運行10秒,主要的間隔是更新後的50秒,你將只有5秒的計時器結束,我在我的情況下是45秒。 –