c#中一般有三种timer:System.threading.timer,System.Timers.Timer,System.windows.forms.timer

今天遇到的坑是System.windows.forms.timer的一个比较坑人的地方。

这个System.windows.forms.timer我知道是单线程的,我理解的话就是到时间就把一个事件扔到窗体的消息队列中,然后有窗体线程取出消息并执行。

要注意的一点,也就是我今天遇到的坑,如果你在其他线程(不是创建窗体的那个线程)去调用timer.start(),是不会起作用的,回调函数不会执行。

最坑的是,没有任何错误提示。我找了好半天才明白是因为线程不同的原因。

后来就把timer换成System.Timers.Timer,就好了。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注