gpt4 book ai didi

multithreading - .NET - 多个计时器实例意味着多个线程?

转载 作者:行者123 更新时间:2023-12-04 06:49:02 25 4
gpt4 key购买 nike

我已经有一个运行着 System.Timers.Timer 的 Windows 服务来完成特定的工作。但是,我希望一些作品同时运行,但在不同的线程中。

有人告诉我创建一个不同的 System.Timers.Timer 实例。它是否正确?这种方式并行运行吗?

例如:

System.Timers.Timer tmr1 = new System.Timers.Timer();
tmr1.Elapsed += new ElapsedEventHandler(DoWork1);
tmr1.Interval = 5000;

System.Timers.Timer tmr2 = new System.Timers.Timer();
tmr2.Elapsed += new ElapsedEventHandler(DoWork2);
tmr2.Interval = 5000;

tmr1tmr2 是否会在不同的线程上运行,以便DoWork1DoWork2 可以同时运行,即同时?

谢谢!

最佳答案

这并没有错。

小心点。 System.Timers.Timer 将为每个 Elapsed 事件启动一个新线程。如果 Elapsed 事件处理程序花费的时间太长,您就会遇到麻烦。您的处理程序将在另一个线程上再次调用,即使之前的调用尚未完成。这往往会产生难以诊断的错误。您可以通过将 AutoReset 属性设置为 false 来避免这种情况。还要确保在事件处理程序中使用 try/catch,异常会在没有诊断的情况下被吞噬。

关于multithreading - .NET - 多个计时器实例意味着多个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18001733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com