![]() |
1
8
您可以使用任意多的线程。然而,你必须遵守VCL的规则。具体来说,您只能从主线程访问VCL组件。你的代码打破了这个规则。
每当您想从线程访问VCL组件时,请使用
看着你的代码,如果你真的想在每次定时器启动时创建一个新线程,我会很惊讶。你真的打算这么做吗?以及使用
说了所有这些,如果你愿意的话,你可以用计时器完美地编写代码,并且避免使用任何线程。您需要声明两个计数器,每次触发计时器过程时都会递增这些计数器。例如:
然后,当您想开始计数时,请初始化计数器并启动计时器:
每当计时器触发您的增量时,计数器就会启动。当计数器达到上限值时,停止计数器。
|
![]() |
2
3
您的代码,带有仅在主线程中执行UI操作的更正。它对我有效:
我没有更改你的代码中的任何其他内容,但请仔细阅读大卫的答案。这里有一些你应该注意的备注。 |
|
3
0
亚当, 如果使用Parallel库会更容易。您的初始程序如下:
|
![]() |
4
0
根据@GabrielF的回复,我添加了一个ttimer,并制作了一个完整的代码来复制和传递:
也许这对某人有帮助。我在Delphi7上编写并测试了它。 |
![]() |
Marcoscdoni · 突出显示DBGrid中的特定文本 8 年前 |
![]() |
Adam · 如何在delphi项目中执行两个线程 9 年前 |
![]() |
Nobby · 将更改的位图分配给VCL样式时发生访问冲突 9 年前 |
![]() |
Jens Mühlenhoff · 如何从列表中删除所有重复项? 9 年前 |
|
Jan de Jonge · 帮助洞察的新路线 9 年前 |