使用SetParent将窗口嵌入到外部进程中的消息循环问题

问题描述 投票:1回答:1

我的Windows应用程序具有选项卡式界面。每个选项卡都会呈现一些UI内容。众所周知,如果我在主线程中执行非常耗时的for循环而不让其他人处理任何Windows消息,则该应用程序将为frozen。在冻结期间,我无法切换标签。

我的灵感来自Google Chrome的多进程架构。我尝试使用SetParentembed a process into another process。更具体地说:进程A是主进程。它可以创建无限的工作进程。每个工作进程都有自己的消息循环。如果进程B被冻结,则不应冻结进程A和任何其他工作进程。

实际上,我错了:如果我单击按钮工作进程B来在主线程中做很多UI工作而不中断,那么不仅阻塞了进程B的UI,而且阻塞了进程A的UI,直到我的测试代码结束。

有人可以和我分享一些灯光吗?

multithreading delphi user-interface blocking sendmessage
1个回答
7
投票

[您正在尝试做的事,嗯,要做好就很难了。我建议您先阅读Raymond Chen的文章:Is it legal to call have a cross-process parent/child or owner/owned window relationship

© www.soinside.com 2019 - 2024. All rights reserved.