C# 可重置的延时执行
时间: 2024-09-14 15:03:57 浏览: 65
在C#中,可重置的延时执行通常通过`System.Threading.Timer`或`System.Timers.Timer`类以及`Task.Delay`配合使用来实现。`Timer`类提供了定时执行某个操作的功能,并且可以在需要的时候手动重设时间。
例如,如果你想要创建一个每5秒执行一次的任务,但是用户可以随时暂停、继续或改变延迟时间,你可以这样做:
```csharp
using System;
using System.Threading;
class Program
{
private Timer myTimer;
public void StartTimer(int delay)
{
if (myTimer != null)
myTimer.Change(0, delay * 1000); // 重设间隔
myTimer = new Timer(state =>
{
Console.WriteLine("Delayed action executed");
// 这里可以替换为你要执行的实际任务
}, null, delay * 1000, Timeout.Infinite);
}
public void PauseTimer()
{
myTimer.Change(Timeout.Infinite, -1); // 暂停,设置为无限期等待
}
public void ResumeTimer()
{
if (myTimer != null && !myTimer.IsRunning)
StartTimer(initialDelay); // 重新开始计时
}
}
```
在这个例子中,`StartTimer`方法会启动定时器,`PauseTimer`会停止定时器并进入休眠状态,而`ResumeTimer`会在定时器未运行时重新启动它。
阅读全文