如何检测TPersistent类处于 csDesigning 状态?
1 回答
0
使用数据库时,如果您希望获得丰富的用户体验,线程可能会有所帮助。该线程应该负责执行冗长任务的唯一目的,在您的情况下,数据库查询需要时间才能完成。
为了完成在如此长的数据库查询期间显示的任何临时响应表单,您必须在主线程中执行所有 GUI 更新,使用Synchronize线程内部指示主线程执行此操作。有很多种方法可以做到这一点,但我不会详细介绍。
VCL 是一个复杂的库,并且不是线程安全的。您必须线程保护与可以由多个线程访问的任何事物的所有交互 - 并且每个线程都必须设计为尊重您实现的任何保护机制。但是,VCL 没有线程保护的概念,并且有自己的想法。因此,您必须始终尊重Synchronize线程向主线程发送某种指令的过程。
在您的情况下,我将创建两个同步过程:StartProcess和StopProcess. 例如,调用这些过程Synchronize(StartProcess);会触发一个事件来通知主线程一个进程已经启动——因此主线程应该显示你的临时窗口警报一个冗长的进程。StopProcess查询完成后同步事件。
至于您希望显示的实际窗口,这完全取决于您,尽管它们通常有一个重复的动画来说明一个漫长的过程。
于 2014-04-22T05:50:52.727 回答