请教下System.Windows.Forms.Timer到底是不是单线程的。
我看帮助文档说这个是单线程的,但我下面试验有些不解。
试验一:
我timer1的Interval设为500
private void timer1_Tick(object sender, EventArgs e)
{
MessageBox.Show("test");
Thread.Sleep(2000);
}
如果是单线程的,当弹出第一个"test"后,由于Thread.Sleep(2000);的阻塞,
第二个对话框应至少2秒后才能弹出,但实际上Thread.Sleep(2000);这一句加与没加的效果相同,都是500毫秒弹出一次"test"。感觉就像多线程的。
可是当我改成下面后
试验二:
private void timer1_Tick(object sender, EventArgs e)
{
Thread.Sleep(2000);
MessageBox.Show("test");
}
"test"并没弹出,而是出现窗口卡住了,这又是怎么回事呢(我用断点也不能拦到)
谢谢!
试验一:
我timer1的Interval设为500
private void timer1_Tick(object sender, EventArgs e)
{
MessageBox.Show("test");
Thread.Sleep(2000);
}
如果是单线程的,当弹出第一个"test"后,由于Thread.Sleep(2000);的阻塞,
第二个对话框应至少2秒后才能弹出,但实际上Thread.Sleep(2000);这一句加与没加的效果相同,都是500毫秒弹出一次"test"。感觉就像多线程的。
可是当我改成下面后
试验二:
private void timer1_Tick(object sender, EventArgs e)
{
Thread.Sleep(2000);
MessageBox.Show("test");
}
"test"并没弹出,而是出现窗口卡住了,这又是怎么回事呢(我用断点也不能拦到)
谢谢!
...全文
相关推荐
C#中Forms.Timer、Timers.Timer、Threading.Timer的用法分析
**System.Windows.Forms.Timer**System.Windows.Forms.Timer是专门针对Windows Forms应用程序设计的。
.NET Framework中定时器timer的单线程与多线程使用讲解
首先,单线程定时器在.NET Framework中的代表是System.Windows.Forms.Timer和System.Windows.Threading.DispatcherTimer。
c# windows服务小实例,不能使用windows.form.timer控件,而是使用System.Timers.Timer控件
该项目演示如何在C# Windows服务中使用System.Timers.Timer实现定时任务,避免使用Windows.Forms.Timer。服务每120秒触发一次事件,适合后台周期性操作。代码包
System.Windows.Forms.dll
System.Windows.Forms.Timer 引用
c# 区分几种定时器(timer)
**System.Windows.Forms.Timer** - 专为Windows Forms设计,适合在单线程环境中使用,如更新UI元素。


