看了一下,那什么情况他会创建独立的线程?
@youyi000: 按照官方的说法,这个Forms.Timer是会阻塞界面响应的,你可以将时间间隔改小一点进行测试。
Timer 用于以用户定义的事件间隔触发事件。 Windows 计时器是为单线程环境设计的,其中,UI 线程用于执行处理。 它要求用户代码有一个可用的 UI 消息泵,而且总是在同一个线程中操作,或者将调用封送到另一个线程。 使用此计时器时,请使用 Tick 事件执行轮询操作,或在指定的时间内显示启动画面。 每当 Enabled 属性设置为 true 且 Interval 属性大于 0 时,将引发 Tick 事件,引发的时间间隔基于 Interval 属性设置。 此类提供用于设置时间间隔以及启动和停止计时器的方法。
摘自:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.timer.aspx
@幻天芒: 现在的情况是理论应该是阻塞UI界面响应,但实际情况是界面没有被阻塞,可能的原因是定时器中执行的程序会调用第三方的dll,然后访问远程服务获取数据。
@youyi000: 第三方dll,可能是多线程的。导致阻塞不了(可能)。
TIMER执行是多线程,不是UI线程执行的
System.Windows.Forms.Timer 不是System.Timers.Timer。。。
@56180825: 关键是在哪个线程执行,是启动定时器所在线程还是新建线程执行。
@56180825: 我试了下,确实单线程的,我前面说错了