我在VB.Net 2.0中有一个遗留的WinForms Mdi应用程序,我正在添加功能.其中一个补充是当当前时间接近指定值(截止日期)时需要提出的警告.我的目的是每小时检查一次,直到截止日期前不到一小时,然后按指定的时间间隔显示警告,直到时间结束.
用户需要能够在截止日期之前甚至在截止日期之后继续使用应用程序,但他们需要定期了解截止日期的接近程度.
该应用程序尚未使用System.Threading,目前我对它的了解有限.我知道有3种不同的Timer()方法可用:
System.Threading.Timer()
Windows.Forms.Timer()和
System.Timers.Timer()
我的问题是,这是最好的方法吗?我试图使用线程计时器,但由于WinForms不是线程安全的,我试图访问另一个类时遇到运行时错误.是否值得使类/表单线程安全?我完全偏离了轨道吗?
谢谢.
这篇文章解释得很好:
比较.NET Framework类库中的Timer类
听起来像System.Windows.Forms.Timer是适合你的.
我的准则:如果您希望计时器在主GUI线程上运行,请坚持使用Windows.Forms.Timer.如果可以在线程池线程上异步调用计时器,或者如果您不希望遇到System.Windows.Forms.Timer容易受到的小延迟,请使用System.Timers.Timer.System.Threading.Timer具有与其他两个不同的接口,并且不是线程安全的; 就个人而言,我不是粉丝.
我只想使用Forms计时器.我想我读到它不那么准确,但听起来你并不需要它.