【发布时间】:2020-09-14 01:40:41
【问题描述】:
两个问题。
一:在 winforms 应用程序中,在它的 elapsed 事件中启用和禁用 system.timers.timer 是个好主意还是坏主意,以便主 UI 线程可以访问在其上创建的变量和方法那个主 UI 线程?以代码为例:
myElapsedTimerEvent(object sender, ElapsedEventArgs args)
{
timer.enabled = false;
/***Call some functions and manipulate some variables***/
timer.enabled = true;
}
二:根据大家的经验,winform和c#中的system.timers.timer有哪些注意事项和需要注意的危险?如果没有正确使用计时器,您是否可以提供任何关于硬件和/或软件可能发生的事情的示例?
任何关于使用 system.timers.timer 的建议将不胜感激。
感谢阅读。
【问题讨论】:
-
为什么不使用 Windows 窗体计时器?
-
一个windows.forms.timer可以有多个实例吗?原因是正在制作的应用程序需要同时至少做两件事。 Windows 窗体计时器可以完成这样的任务吗?
-
禁用和重新启用计时器将导致它不同步...例如如果您的计时器设置为 1000 毫秒,但您的代码执行需要 10-20 毫秒,则计时器事件将每 1010-1020 毫秒触发一次,这可能会对您产生影响。如果您担心两个经过的事件同时访问相同的变量,我建议使用
lock。 -
感谢您的快速回复。我将研究表单计时器和锁。如果有其他建议,请告诉我!谢谢!
-
@someuser193 - 你想拥有多少就拥有多少。为什么不测试一下?
标签: c# multithreading winforms threadpool