在 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
作為相關事件處理程式的輸出。
-
首先,我們必須匯入以下庫。
using System; using System.Timers;
-
在
Shanitimer
類中宣告計時器變數,我們將其稱為t
,確保它可用於所有方法。private static System.Timers.Timer t;
-
我們將按照內建類設定一個計時器。
AutoReset
計時器會在經過一個間隔後重置並開始新的計數。如果設定為false
,則必須重置計時器。2000
是可以根據情況更改的時間間隔。你可以在設定Interval
引數後以毫秒
為單位指定要在執行所需程式碼之前等待多長時間。
t.AutoReset = true; t.Enabled = true; t.Interval = 2000; t.Elapsed += ontime;
Elapsed
屬性指定要在該時間之後執行的函式。在 C# 中定義事件處理程式可以使用+=
更快地完成,就像我所做的那樣,它指示計時器訂閱事件處理程式。
-
我們還在控制檯上顯示了一些警報訊息。
Console.WriteLine(" Waiting for Command "); Console.WriteLine(" Click on Enter Button to Exit Console "); Console.ReadLine();
-
使用
Stop()
函式停止計時器。Dispose()
函式應該用於在計時器完成執行後釋放它所消耗的任何資源。t.Stop(); t.Dispose();
-
ontime()
方法需要Object
和System.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
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