Google Chrome 和 IE8(以及其他)旨在通过在单独的进程中隔离每个选项卡(网页)来提供更高的可靠性/稳定性(我知道过于简化了)。
这似乎比多线程更重量级,但主要好处是一个进程中的崩溃不会导致整个应用程序崩溃。
似乎多进程架构长期以来一直用于服务器端应用程序(例如 Web 服务器),但这些是没有专用 GUI 的进程。有趣的是,它现在被用于桌面应用程序的用户界面。
我将如何在 Windows Forms .NET 应用程序中实现这一点?甚至可能吗?
Process.Start() 显然是第一个要查看的地方,但新进程的 GUI 并未与宿主应用程序的 GUI 紧密集成。它是一个新的独立应用程序,而不是主应用程序的子控件/窗口,就像 Chrome/IE8 一样。
(对于任何感兴趣的人,Scott Hanselmann 在这里写了一篇关于 IE8 多进程架构的很好的介绍。)
[更新]
进一步来说:
一个单独的“子流程”如何在“主流程”内直接渲染到 UI?这实际上是发生了什么,或者正如评论中所建议的那样,子进程是否使用 IPC 要求主进程为其渲染?