3
我想在時間t = 0到t = 10秒之間的200ms間隔內重複執行一些操作。在C#中停留一段時間後停止計時器
目前我正在跟蹤變量中的經過時間。這對我來說很不舒服。下面是代碼 -
using System;
using System.Timers;
class Program
{
static int interval = 200; // 0.2 seconds or 200 ms
static int totalTime = 10000; // 10 seconds or 10000 ms
static int elapsedTime = 0; // Elapsed time in ms
static Timer timer;
static void Main(string[] args)
{
timer = new Timer(interval);
timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
timer.Enabled = true;
Console.ReadKey(); // for checking
}
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
if (elapsedTime > totalTime)
timer.Stop();
else
{
// here I am performing the task, which starts at t=0 sec to t=10 sec
}
elapsedTime += interval;
}
}
請提出,如果存在任何更好的方式來執行相同的任務。示例代碼總是讚賞。
如果機器非常慢並且時間間隔非常短,則有可能在處理停止方法之前觸發新事件。可能永遠不會發生,但唯一的保證是嘗試獲取鎖定並退出,如果無法獲取 –
@NewHire:如果我的任務(在其他塊內執行)需要100毫秒執行,該怎麼辦?在這種情況下,實際使用時間將是200ms + 100ms,這裏不考慮:( 您對此有何感想?如前所述,我想在200毫秒的延遲時間內從0到10秒重複執行此操作。 –
@RaviJoshi,不會。你的消耗時間是200ms,因爲你的任務只需要100ms,而定時器會在再次發射之前等待100ms。 – user2711965