c#怎么做一个限定次数的timer
时间: 2024-09-13 13:05:23 浏览: 34
在 C# 中,你可以使用 `System.Timers.Timer` 类结合递归的方式来创建一个限定次数的计时器。下面是一个简单的例子,演示如何创建一个计时器,它会在指定的间隔运行一次,并且最多执行指定的次数:
```csharp
using System;
using System.Threading;
class Program
{
private static int executionCount = 0; // 记录执行次数
public static void Main(string[] args)
{
Timer timer = new Timer(OnTick, null, TimeSpan.FromSeconds(1), TimeSpan.FromSeconds(1)); // 每秒执行一次
timer.Change(TimeSpan.FromMilliseconds(-1), TimeSpan.FromMilliseconds(-1)); // 设置无限循环,除非手动停止
while (executionCount < MaxExecutions) // 如果执行次数未达到最大值
{
timer.Start(); // 开始计时
Thread.Sleep(50); // 稍微延迟一下,以便控制台可以接收用户输入
if (!IsStopped()) // 判断是否被用户停止
{
Console.WriteLine($"第 {executionCount + 1} 次执行");
executionCount++;
}
else
{
timer.Stop();
break;
}
}
Console.WriteLine("已达到最大执行次数,计时器停止。");
}
// 定义计时器回调函数
private static void OnTick(object state)
{
Console.WriteLine("定时器触发");
}
// 用户请求停止计时器的方法
private static bool IsStopped()
{
Console.Write("是否停止计时器 (y/n)? ");
string input = Console.ReadLine().ToLower();
return input == "y";
}
// 这里假设有一个MaxExecutions常量,表示最大执行次数
private const int MaxExecutions = 5;
}
```
在这个示例中,用户可以选择在任何时候通过键盘输入 'y' 来停止计时器。当你运行这个程序,计时器将在控制台上显示“定时器触发”,并限制执行次数为5次。