gpt4 book ai didi

multithreading - TThread 中的 Application.ProcessMessages?

转载 作者:行者123 更新时间:2023-12-03 12:48:01 24 4
gpt4 key购买 nike

在线程(不是主线程)内调用 Application.Processmessages 是否“可以”,还是我应该预料到麻烦?

最佳答案

TApplication.ProcessMessages() 主要用于处理 VCL 消息。您不应在工作线程中接收任何 VCL 消息,除非您正在从工作线程创建和显示 TForm 窗口。你不应该这样做,因为 VCL 不是线程安全的,不应该在主 UI 线程之外使用。

但是,话虽如此,如果在工作线程中没有收到 VCL 消息,则在工作线程中调用 ProcessMessages() 本身并无害处。它会将任何接收到的消息(VCL 或其他)分派(dispatch)给调用线程中适当的窗口过程。但是,如果您认为您需要在工作线程中手动分发消息,您真的需要首先质疑为什么需要它。除非您在工作线程中使用 COM 单元线程对象,或者将自定义线程消息发布到工作线程,否则在工作线程中运行消息循环的用处很小,即使这样 ProcessMessages()不适合这个目的。

关于multithreading - TThread 中的 Application.ProcessMessages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65797197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com