我目前以 10 秒为间隔使用 System.Threading.Timer。我添加了一小段代码来在每次计时器触发时写入文件,虽然大部分时间它都会按时触发,但有时(大概是在购买应用程序的其余部分时),无法触发 30或 40 秒,然后快速连续地反复发射。
我可以在 .NET 3.5 中使用更可靠的计时器吗?
定时器设置如下
Timer someTimer = new Timer(new TimerCallback(SomeMethod), null, 0, 10000);
...回调是:
private static void SomeMethod(object state)
但是,很难提供比这更多的代码,因为计时器通常会正确触发。当它嵌入到一个大型应用程序(约 100,000 行左右)中时,随着多个线程被触发,左、右和中间,您会慢慢开始看到计时器间歇性地触发。 我看到几篇帖子暗示 ThreadPool 可能已耗尽,所以我目前正在查看这是否是我遇到的情况。
最佳答案
在.net中引用不同的定时器类
.NET 中有三个称为“Timer”的计时器类。听起来您正在使用 Windows 窗体,但实际上您可能会发现 System.Threading.Timer 类更有用 - 但要小心,因为它会在池线程上回调,所以您不能直接与您的窗体交互回调。
更准确的计时器 - 根据 MSDN
Windows 窗体计时器组件是单线程的,精度限制为 55 毫秒。如果您需要更精确的多线程计时器,请使用 System.Timers 命名空间中的 Timer 类。
关于c# - 定时器比 System.Threading.Timer 更可靠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10781853/