ZT 傻傻分不清楚,C#中的3个定时器类详细解读
转贴自:https://baijiahao.baidu.com/s?id=1781856645054471742&wfr=spider&for=pc
它的总结很好。
以下是三种定时器的总结:
1)System.Timers.Timer:这是一个后台线程的定时器,用于在服务器端执行周期性任务。它不会阻塞UI线程,因此适合在需要执行长时间运行的任务时使用。其优点是能够在后台线程上执行任务,而不会影响UI的响应性。但是需要注意的是,由于它运行在后台线程上,因此不能直接在事件处理方法中更新UI元素,需要通过委托或线程安全的方式来操作UI。
2)System.Threading.Timer:这是一个更通用的定时器,用于在指定的线程上调度任务。它可以设置回调方法,并指定初始等待时间和间隔时间。它适用于在多线程环境中使用,可以在非同步上下文中定期执行任务。由于Timer运行在指定的线程上,因此可以用来在指定的线程上调度任务。但是需要注意的是,如果回调方法中需要更新UI元素,也需要使用委托或线程安全的方式来操作UI。
3)System.Windows.Forms.Timer:这是一个专门为Windows Forms应用程序设计的定时器,用于定期执行任务并更新UI。它直接运行在UI线程上,因此可以直接在事件处理方法中获取和修改UI元素而不会出现问题。但是需要注意的是,由于它运行在UI线程上,如果定时器事件处理方法执行时间过长,会影响UI的响应性。因此,在使用Windows Forms Timer时需要注意控制事件处理方法的执行时间,避免阻塞UI线程。
另外,这几篇也不错:
https://www.cnblogs.com/weihengblogs/p/10043926.html
https://blog.csdn.net/m0_62355555/article/details/125540262
https://www.cnblogs.com/lzhdim/p/18187261
https://www.cnblogs.com/LXLR/p/17696125.html