在我目前的项目中,我有一个这样的结构:
Main Thread (GUI):
->Parser Thread
->Healer Thread
->Scripts Thread
问题在于治疗师&脚本线程必须使用适当的计时器创建子线程,它看起来像这样:
->Parser Thread
->Healer Thread:
-->Healer 1
-->Healer 2
--> (...)
->Scripts Thread:
-->Script 1
--> (...)
为此,我考虑过编写一个动态Timer,它将在运行时在添加新的Heal / Script时创建。
现在的问题是: 也许我有20个计时器在同一时间运行,因此,这对我的程序性能(CPU消耗等)不会有问题吗? 这是实现我正在寻找的最佳方式吗?
提前致谢
答案 0 :(得分:1)
在应用程序中同时激活多达20个定时器是没有问题的。现代硬件不仅能够处理这种情况。
还要记住,定时器消息是低优先级消息,因此仅在消息队列为空时才合成。因此,您需要及时维护线程的消息队列,以便及时传递消息。
更大的问题是您无法在GUI / VCL线程之外创建TTimer
个实例。这是因为定时器组件调用AllocateHWnd
,它不是线程安全的,只能从GUI / VCL线程调用。因此,您需要直接与原始Win32计时器API进行交互,而不是使用VCL TTimer
包装器。