C# 中的Stopwatch和timer
在C#中,Stopwatch
和 Timer
(通常指的是 System.Timers.Timer
或 System.Windows.Forms.Timer
)是两个不同的类,它们用于不同的目的:
Stopwatch 类
Stopwatch
类位于 System.Diagnostics
命名空间,主要用于精确测量时间间隔。它非常适合用于性能分析、测量代码块的执行时间或任何需要高精度计时的场景。Stopwatch
提供了以下功能:
-
以高精度(通常为计时器分辨率,可能是微秒级别)启动、停止和重置计时器。
-
提供了
Elapsed
属性,返回一个TimeSpan
对象,表示经过的时间。 -
支持跨平台使用,因为它不依赖于操作系统的计时器。
示例代码:
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
// 执行一些操作
for (int i = 0; i < 1000000; i++)
{
// 模拟工作负载
}
stopwatch.Stop();
Console.WriteLine("Elapsed time: " + stopwatch.Elapsed);
}
}
Timer 类
Timer
类通常指的是 System.Timers.Timer
或 System.Windows.Forms.Timer
,它们用于在指定的时间间隔后执行代码。这些计时器主要用于定时任务,如每隔一段时间执行一次操作。
System.Timers.Timer
System.Timers.Timer
位于 System.Timers
命名空间,提供了一个服务器端的定时器,可以用于任何需要定时执行任务的场景,包括Windows服务。
示例代码:
using System;
using System.Timers;
class Program
{
static void Main()
{
Timer timer = new Timer(1000); // 设置定时器间隔为1000毫秒
timer.Elapsed += (sender, e) =>
{
Console.WriteLine("Timer ticked at " + DateTime.Now);
// 执行定时任务
};
timer.AutoReset = true; // 设置定时器自动重置
timer.Enabled = true; // 启动定时器
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
timer.Dispose(); // 清理资源
}
}
System.Windows.Forms.Timer
System.Windows.Forms.Timer
位于 System.Windows.Forms
命名空间,主要用于Windows Forms应用程序中,以指定的时间间隔触发事件。
using System;
using System.Windows.Forms;
class Program
{
static void Main()
{
Timer timer = new Timer();
timer.Interval = 1000; // 设置定时器间隔为1000毫秒
timer.Tick += (sender, e) =>
{
Console.WriteLine("Timer ticked at " + DateTime.Now);
// 执行定时任务
};
timer.Start(); // 启动定时器
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
timer.Stop(); // 停止定时器
}
}
总结
-
Stopwatch:用于测量时间间隔,适合性能分析和精确计时。
-
Timer:用于在指定的时间间隔后执行代码,适合定时任务。
根据你的具体需求,可以选择使用 Stopwatch
来测量时间间隔,或使用 Timer
来执行定时任务。
原文地址:https://blog.csdn.net/weixin_64532720/article/details/145280800
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!