.net几种timer区别
概述:.net框架不同名称控件都包含了各种timer,但每个timer有什么具体区别呢?
一、System.Threading
private static void ThreadingTimer()
{
Console.WriteLine("System.Threading.Timer call thread id {0}",Thread.CurrentThread.ManagedThreadId);
using (var t1 = new System.Threading.Timer(
TimeAction, null, TimeSpan.FromSeconds(2),
TimeSpan.FromSeconds(3)))
{
Thread.Sleep(15000);
}
}
static void TimeAction(object o)
{
Console.WriteLine("System.Threading.Timer {0:T}", DateTime.Now);
Console.WriteLine("System.Threading.Timer callback thread id{0}", Thread.CurrentThread.ManagedThreadId);
}
运行结果如下
从运行结果可以看出
回调函数执行的线程(callback thread)和调用线程(calling thread)并不是一样的。
二、System.Timers
private static void TimersTimer()
{
Console.WriteLine("System.Timers.Timer call thread id {0}", Thread.CurrentThread.ManagedThreadId);
var t1 = new System.Timers.Timer(1000);
t1.AutoReset = true;
t1.Elapsed += TimeAction;
t1.Start();
Thread.Sleep(10000);
t1.Stop();
t1.Dispose();
}
static void TimeAction(object sender, System.Timers.ElapsedEventArgs e)
{
Console.WriteLine("System.Timers.Timer {0:T}", e.SignalTime);
Console.WriteLine("System.Timers.Timer event thread id {0}", Thread.CurrentThread.ManagedThreadId);
}
执行结果如下
事件方法执行所在线程和调用线程并不一样
三、System.Windows.Forms,System.Web.UI,System.Windows.Threading
这些timer的执行方法所在的线程和调用线程一致
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个我遇到过的“量子力学”级别的BUG。
· Linux系列:如何调试 malloc 的底层源码
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 历时 8 年,我冲上开源榜前 8 了!
· 分享一个我遇到过的“量子力学”级别的BUG。
· 物流快递公司核心技术能力-海量大数据处理技术
· 四大AI编程工具组合测评
· 关于能否用DeepSeek做危险的事情,DeepSeek本身给出了答案