我正在使用每 5 分鐘Timer調用一段代碼的方法。ExecuteEvery5Min現在我啟動控制臺應用程序,我必須等待 5 分鐘,然后ExecuteEvery5Min執行代碼,然后每 5 分鐘執行一次......有沒有辦法在應用程序啟動并立即ExecuteEvery5Min執行代碼然后每 5 分鐘通過計時器執行一次?using (UtilityClass utilityClass = new UtilityClass()) // To dispose after the use { while (true) { } }public class UtilityClass : IDisposable{ private readonly System.Timers.Timer _Timer; public UtilityClass() { _Timer = new System.Timers.Timer(TimeSpan.FromMinutes(5).TotalMilliseconds) { Enabled = true }; _Timer.Elapsed += (sender, eventArgs) => { ExecuteEvery5Min(); }; } private void ExecuteEvery5Min() { Console.WriteLine($"Every 5 minute at {DateTime.Now}"); } public void Dispose() { _Timer.Dispose(); }}
2 回答

吃雞游戲
TA貢獻1829條經驗 獲得超7個贊
為什么不簡單地在計時器之上調用構造函數中的代碼(立即擁有它)?
_Timer = new System.Timers.Timer(TimeSpan.FromMinutes(5).TotalMilliseconds)
{
Enabled = true
};
// add this
ExecuteEvery5Min();
_Timer.Elapsed += (sender, eventArgs) =>
{
ExecuteEvery5Min();
};

慕無忌1623718
TA貢獻1744條經驗 獲得超4個贊
如果可以的話,您可以改用System.Threading.Timer
它,它具有以下構造函數:
public Timer (System.Threading.TimerCallback callback, object state, int dueTime, int period);
從以下鏈接引用:
dueTime Int32 調用回調之前延遲的時間量,以毫秒為單位。指定 Infinite 以防止計時器啟動。指定零 (0) 以立即啟動計時器。
period Int32 回調調用之間的時間間隔,以毫秒為單位。指定 Infinite 以禁用周期性信號。
PS:它是基于回調的,而不是像你現在使用的那樣基于事件。
請參閱:https ://learn.microsoft.com/en-us/dotnet/api/system.threading.timer.-ctor?view=netframework-4.8
- 2 回答
- 0 關注
- 122 瀏覽
添加回答
舉報
0/150
提交
取消