在运行时动态创建Delphi计时器(性能,CPU消耗)



在我当前的项目中,我有一个这样的结构:

Main Thread (GUI):
->Parser Thread
->Healer Thread
->Scripts Thread

问题是治疗师&脚本线程必须创建带有相应计时器的子线程,它看起来像这样:

->Parser Thread
->Healer Thread:
-->Healer 1
-->Healer 2
--> (...) 
->Scripts Thread:
-->Script 1
--> (...)

为此,我考虑过编写一个动态计时器,该计时器将在运行时添加新的Heal/Script时创建。

现在问题是:也许我有像20个定时器在同一时间运行,因为这不会是一个问题,我的程序性能(CPU消耗等)?这是实现我所追求的最好方式吗?

Thanks in advance

在一个应用程序中同时激活多达20个计时器是没有问题的。现代硬件完全有能力处理这个问题。

还请记住,计时器消息是低优先级消息,因此只有在消息队列为空时才会合成。因此,您需要及时地为线程的消息队列提供服务,以便及时地传递消息。

一个更大的问题是,你不能在GUI/VCL线程之外创建TTimer实例。这是因为定时器组件调用AllocateHWnd不是线程安全的,只能从GUI/VCL线程调用。因此,您需要直接与原始的Win32计时器API交互,而不是使用VCL TTimer包装器。

最新更新