在 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