【发布时间】:2014-03-02 18:20:01
【问题描述】:
我的 Windows 应用程序有一个选项卡式界面。每个选项卡都会呈现一些 UI 内容。众所周知,如果我在主线程中执行一个非常耗时的 for 循环,而不让其他人处理任何 Windows 消息,应用程序将被冻结。在冻结期间,我无法切换标签。
Google Chrome 的多进程架构启发了我。我尝试使用SetParent 到embed a process into another process。更具体地说:进程 A 是主进程。它可以创建无限的工作进程。每个工作进程都有自己的消息循环。如果进程 B 被冻结,则进程 A 和任何其他工作进程不应被冻结。
其实我错了:如果我点击一个按钮工作进程B在主线程中不停地做很多UI的事情,不仅进程B的UI而且进程A的UI都会被阻塞,直到我的测试代码结束。
有人可以分享一些灯给我吗?
【问题讨论】:
标签: multithreading delphi user-interface blocking sendmessage