在 C# 中重置計時器

Muhammad Zeeshan 2023年10月12日
  1. C# 中的 System.Timer
  2. C# 中使用 Timer.AutoReset 重置計時器
在 C# 中重置計時器

本文將討論使用 C# 程式語言重置計時器。

C# 中的 System.Timer

C# 中的這個 System.Timer 類提供了一種機制,可以在經過一定時間後執行一段程式碼,並且這段程式碼可能會被執行多次。

C# 中使用 Timer.AutoReset 重置計時器

當計時器的 interval 結束時,AutoReset 允許它自行重置並再次從 0 開始計數。如果 enabled 屬性設定為 true,則倒計時將開始,但如果將其設定為 false,則需要通過呼叫 Start() 方法來重新啟動計時器。

當程式的定時器功能已經完成時,程式應該被終止並且它的資源可以在其他上下文中使用。換句話說,Timer.AutoReset 讀取或寫入一個布林值,該值指示計時器應該只引發一次 false 還是多次 true 引發 Elapsed 事件。

AutoReset 事件的語法如下。

public bool AutoReset { get; set; }

這種事件可以用於各種事情,但它特別適合在 Web 應用程式中使用以確定連線的狀態。在視訊遊戲期間使用的秒錶是另一種潛在用途。

下面的示例演示如何構造一個帶有 Elapsed 事件的 Timer,該事件在 2 秒過去時觸發。然後控制檯會顯示 My name is DelftStack 作為相關事件處理程式的輸出。

  1. 首先,我們必須匯入以下庫。

    using System;
    using System.Timers;
    
  2. Shanitimer 類中宣告計時器變數,我們將其稱為 t,確保它可用於所有方法。

    private static System.Timers.Timer t;
    
  3. 我們將按照內建類設定一個計時器。

    • AutoReset 計時器會在經過一個間隔後重置並開始新的計數。如果設定為 false,則必須重置計時器。
    • 2000 是可以根據情況更改的時間間隔。你可以在設定 Interval 引數後以 毫秒 為單位指定要在執行所需程式碼之前等待多長時間。
    t.AutoReset = true;
    t.Enabled = true;
    t.Interval = 2000;
    t.Elapsed += ontime;
    
    • Elapsed 屬性指定要在該時間之後執行的函式。在 C# 中定義事件處理程式可以使用+= 更快地完成,就像我所做的那樣,它指示計時器訂閱事件處理程式。
  4. 我們還在控制檯上顯示了一些警報訊息。

    Console.WriteLine(" Waiting for Command ");
    Console.WriteLine(" Click on Enter Button to Exit Console ");
    Console.ReadLine();
    
  5. 使用 Stop() 函式停止計時器。Dispose() 函式應該用於在計時器完成執行後釋放它所消耗的任何資源。

    t.Stop();
    t.Dispose();
    
  6. ontime() 方法需要 ObjectSystem.Timers.ElapsedEventArgs s 引數。

    private static void ontime(Object source, System.Timers.ElapsedEventArgs s) {
      Console.WriteLine(" My name is DelftStack ");
    }
    

完整原始碼:

using System;
using System.Timers;

class Shanitimer {
  private static System.Timers.Timer t;
  static void Main() {
    t = new System.Timers.Timer();
    t.AutoReset = true;
    t.Enabled = true;
    t.Elapsed += ontime;
    t.Interval = 2000;
    Console.WriteLine(" Waiting for Command ");
    Console.WriteLine(" Click on Enter Button to Exit Console ");
    Console.ReadLine();
    t.Stop();
    t.Dispose();
  }
  private static void ontime(Object source, System.Timers.ElapsedEventArgs s) {
    Console.WriteLine(" My name is DelftStack ");
  }
}

輸出:

Waiting for Command
Click on Enter Button to Exit Console
My name is DelftStack
My name is DelftStack
//After this line, I pressed enter
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

相關文章 - Csharp Timer