首页 文章

Delphi:在外部控制处理期间形成被动用户界面

提问于
浏览
0

在Delphi表单应用程序中,如何在没有用户输入的情况下获取处理代码,以及如何使用给定的帧速率更新UI?

所讨论的代码是用于测试/测量重负载下组件的并发操作的测试框架,在相同或不同的机器上具有多个进程 . 重点主要放在数据库操作(点对点或基于服务器)和文件系统可靠性/性能方面,尤其是在具有异构客户端操作系统的网络上 .

帧等待外部事件(IPC,文件系统,网络),指示测试运行的开始和停止;在启动信号之后,它以紧密循环调用提供的测试功能,直到收到停止信号 . 然后它等待下一个启动信号或信号退出 .

我在FoxPro中做了类似的事情已经很久了 . 在那里它很容易,因为Fox不必像Delphi的Application.Run()那样坐在消息泵上;所以我只是提出一个非模态形式,安排它每隔几百毫秒刷新一次,然后深入到程序代码中 . 在原始的Win16 / Win32中,它稍微不那么简单,但仍然相当简单 .

在Delphi中,我甚至不知道在哪里看,文档的结构(D7 XE2)到目前为止成功地蔑视了我 . 在Delphi中最简单的方法是什么?我想我总是可以为实际处理启动一个新线程,并使用像RedrawWindow()和PostQuitMessage()这样的原始Win32调用来根据我的意愿弯曲应用程序 . 但这看起来很笨拙 . 当然必须采用'delphier'的方式来做到这一点?

1 回答

  • 1

    创建后台线程以执行处理任务 . 这使得主UI线程可以根据需要自由地为其消息循环提供服务 .

    任务需要呈现给用户的任何信息必须同步或排队到主UI线程 . 当然,编写完整的应用程序需要更多的细节,但线程是解决方案 . 您可以使用高级库来保护自己免受原始线程的影响,但这并不会改变您需要将处理卸载到主UI线程以外的线程的基本事实 .

相关问题