给C#添加类似于JavaScript中的setTimeout和setInterval函数可以使用System.Timers.Timer类和System.Threading.Timer类来完成。其中,System.Threading.Timer类精度较高,而System.Timers.Timer类易于使用。
使用System.Timers.Timer类实现
- 首先,在需要使用setTimeout或setInterval的类的顶部添加以下引用:
csharp
using System.Timers;
- 定义一个Timer对象并设置时间间隔和重复性:
csharp
Timer timer = new Timer(1000); // 1秒钟的时间间隔
timer.AutoReset = true; // 设置为循环执行
- 把要执行的代码放到Timer.Elapsed事件处理程序中:
csharp
timer.Elapsed += new ElapsedEventHandler(DoSomething);
void DoSomething(object sender, ElapsedEventArgs e)
{
// 执行代码
}
- 启动定时器:
csharp
timer.Start();
- 在需要停止定时器的地方调用timer.Stop()方法。
使用System.Threading.Timer类实现
- 在需要使用setTimeout或setInterval的类的顶部添加以下引用:
csharp
using System.Threading;
- 声明一个Timer对象:
csharp
Timer timer = new Timer(new TimerCallback(DoSomething), null, 0, 1000);
- 把要执行的代码放在TimerCallback委托所引用的方法中:
csharp
void DoSomething(Object stateInfo)
{
// 执行代码
}
- 启动Timer:
csharp
timer.Change(0, 1000);
- 在需要停止定时器的地方调用timer.Change(Timeout.Infinite, Timeout.Infinite)方法。
示例
下面是一个使用System.Timers.Timer类实现setTimeout的示例:
using System;
using System.Timers;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("开始任务");
var timer = new Timer(2000);
timer.AutoReset = false;
timer.Elapsed += new ElapsedEventHandler((sender, e) => {
Console.WriteLine("2秒钟后执行的任务");
});
timer.Start();
Console.ReadLine();
}
}
上述代码会在程序运行2秒钟之后输出“2秒钟后执行的任务”。
下面是一个使用System.Threading.Timer类实现setInterval的示例:
using System;
using System.Threading;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("开始任务");
var timer = new Timer(new TimerCallback((stateInfo) => {
Console.WriteLine("每秒钟执行一次的任务");
}), null, 0, 1000);
Console.ReadLine();
timer.Change(Timeout.Infinite, Timeout.Infinite);
}
}
上述代码会每秒钟输出“每秒钟执行一次的任务”,直到用户按下Enter键停止定时器。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:给c#添加SetTimeout和SetInterval函数 - Python技术站