在 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