【发布时间】:2009-09-21 15:28:34
【问题描述】:
是否可以创建一个“应用程序组”,它可以在一个窗口下运行,但在不同的进程中,比如在 Chrome 浏览器中?我想将一个应用程序分成多个部分,这样一个崩溃或卡住的进程就不会影响其他进程,但仍保持外观和感觉尽可能接近原始系统。
我知道 Chrome 源是可用的,但有没有为 Delphi 准备好一半的东西?
【问题讨论】:
标签: windows delphi google-chrome parallel-processing
是否可以创建一个“应用程序组”,它可以在一个窗口下运行,但在不同的进程中,比如在 Chrome 浏览器中?我想将一个应用程序分成多个部分,这样一个崩溃或卡住的进程就不会影响其他进程,但仍保持外观和感觉尽可能接近原始系统。
我知道 Chrome 源是可用的,但有没有为 Delphi 准备好一半的东西?
【问题讨论】:
标签: windows delphi google-chrome parallel-processing
我想基本上你会创建多个进程,每个进程都会创建一个窗口/表单。其中一个进程具有嵌入每个子窗口的主窗口。这就像调用SetParent 一样简单。不同进程中的窗口将使用 IPC(进程间通信)机制(如 named pipes 或窗口消息)相互通信。
有关在 Delphi 中使用 SetParent 的嵌入示例,请参阅 this question。有关在 Delphi 中使用命名管道的示例,请参阅 this question。
【讨论】:
查看HeidiSQL 的Delphi code。这是一个很好的开源 MySQL 客户端,实现了这种机制。
阅读 Chrome 发布时发布的这个新闻站点:
"Google playing catch-up with HeidiSQL?"
:-)
(来源:heidisql.com)
【讨论】:
Harriv,您可以使用基于plugins 的方案。你有一个主应用程序,它动态加载新闻功能。这里有几个可用的库,我留下一些。
框架
教程
再见。
【讨论】:
看看:http://blogs.microsoft.co.il/blogs/maxim/archive/2008/09/23/curiosity-killed-the-programmer-multiprocess-browser.aspx。该应用程序的源代码在 CSharp 中。我相信您可以将其适应 Delphi。
【讨论】:
您可以分离您的应用程序逻辑并在多个线程中执行它。这样,如果您的应用程序逻辑的一部分挂了,您仍然有一个响应式应用程序。但是您不能将 GUI 放在多个线程中。 VCL 要求您在主线程中执行所有与 GUI 相关的内容。
【讨论】:
我不确定 Delphi 是如何运作的,但多进程编程的标准过程是分叉。
你用你想要的任何代码创建一个新进程。将信息传递给分叉的进程,让它随心所欲地运行。
无法在一个线程响应中解释多进程编程。但是查一下。
【讨论】: