![]() |
1
12
快速而肮脏的解决方案:
要在生产代码中使用它,您需要添加错误处理,可能需要一些进度通知,并且复制本身可能应该以不同的方式实现,但这应该可以让您开始。 回答你的问题:
您可以创建线程,它将阻塞事件并消耗0个CPU周期,直到您添加要复制的文件。一旦复制了所有文件,线程将再次阻塞,因此在程序的整个运行时保持线程除了消耗一些内存外没有任何负面影响。
您可以添加通知,但要使它们真正有用,它们需要在主线程上下文中执行。最简单和最丑的方法是用
但是,我不会以这种方式实现通知。如果您只想显示进度,则不需要用每个文件更新此进度。另外,您已经在VCL线程中,在添加要复制的文件的位置,拥有了所有必要的信息。你可以用一个
对更新问题的评论: 您有以下代码:
但它有两个问题。首先,需要保护对数据字段的所有访问以确保安全,然后您只是在读取数据,而不是添加新文件,因此不需要设置事件。修订后的方法仅为:
而且你只设置了
|
![]() |
2
2
如果你有点不愿意深入到金属,直接处理螺纹,就像在 mghie solution ,另一种可能更快的方法是使用 Andreas Hausladen's AsyncCalls . 骨架代码:
|
![]() |
3
1
使用线程的一个好的开始是delphi the Delphi about site 为了使您的解决方案工作,您需要一个工作线程的作业队列。可以使用字符串列表。但在任何情况下,您都需要保护队列,以便在任何时刻只有一个线程可以写入队列。即使写入线程被挂起。 您的应用程序将写入队列。所以必须有一个有保护的写方法。 线程读取并从队列中删除。因此,必须有一个受保护的读取/删除方法。 您可以使用关键部分来确保在任何时刻只有其中一个可以访问队列。 |
![]() |
Some1Else · 函数在Delphi中重新创建TForm 3 年前 |
![]() |
Agmcz · Delphi安卓库。so未安装(AAB) 3 年前 |
![]() |
nader · 如何使用delphi在web上提交表单 7 年前 |
![]() |
kwadratens · Delphi中的卡方分布函数代码 7 年前 |
|
user9672569 · 如何在完整的位图图像中绘制阴影效果? 7 年前 |
![]() |
mmmm · MSBuild(用于Delphi)Make-like功能 7 年前 |