繁体   English   中英

winform 会 Timer.timer 创建一个新线程吗?

[英]winform will Timer.timer create an new thread?

我想知道 System.timer.timer 是否会创建一个新线程并在其上运行。 据我观察,当我在我的程序上运行调试模式时, timer1_Elapsed 仍在主线程上运行。 任何人都可以帮助我吗?

.NET 中有很多计时器。 IIRC 过去十年跨越了六个,现在接近十个。 如果你包括像 StopWatches、Thread/Task.Delay 之类的东西,我们已经打破了这一打。 即使没有那个,我们也可能已经打破了十二个——很难保持当前的列表。

根据这篇文章, System.Timers.Timer 使用ThreadPool 线程池实际上只是管理线程创建和重用以处理各种任务的自动魔术方式。

但是,通常您希望避免多线程。 使用 GUI,这将使您首先进入CrossThreadExceptions 并需要调用.

我发现区分多任务和多线程很重要。 多任务处理是一个总括术语。 仅当 CPU 负载很重时才需要多线程,例如计算。 然而,在很长一段时间内,多线程只是实现多任务的最快、代码最少的方式。 这最近发生了变化,因为我们现在有了 Async 和 Await 之类的东西,可以以非常低的代码占用进行无线程多任务处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM