相关疑难解决方法(0)

Windows Forms应用程序,例如Google Chrome,具有多个进程

有没有办法使用C#构建一个容器应用程序,其中每个选项卡实际上都是自己的进程,就像使用Google Chrome一样?

c# process winforms

25
推荐指数
5
解决办法
1万
查看次数

使用C#和WinForms在自己的进程中选项卡

可能重复的
Windows窗体应用程序,如谷歌浏览器,具有多个进程
Chrome/IE8多进程设计,是否可以在.NET中使用?
适用于Google Chrome等多进程C#应用的示例

IE8和Google Chrome浏览器都为打开的每个选项卡分别设置了进程.

例如,您启动IE8并在自己的选项卡中打开Yahoo和Google,最终您的系统上运行了3个进程:

  • IE8本身进程[主进程]
    • Google标签流程
    • Yahoo标签流程

我正在玩C#/ WinForms中类似的东西.

举个简单的例子:我有一个显示Form的主进程,我在子进程中有一个Button.我们如何将Button从其他进程渲染到我的表单上?

c# process winforms

7
推荐指数
1
解决办法
2524
查看次数

Chrome/IE8多进程设计,是否可以在.NET中实现?

谷歌Chrome和IE8(以及其他)旨在通过在单独的过程中隔离每个标签(网页)来提供更高的可靠性/稳定性(过度简化,我知道).

这似乎比多线程更重量级,但在一个进程中崩溃的主要好处是不会导致整个应用程序崩溃.

似乎多进程架构长期以来一直用于服务器端应用程序(例如Web服务器),但这些是没有专用GUI的进程.有趣的是,它现在被用在桌面应用程序的用户界面中.

如何在Windows Forms .NET应用程序中实现这一点?它甚至可能吗?

Process.Start()显然是第一个看的地方,但新进程的GUI没有与主机应用程序的GUI紧密集成.它是一个新的独立应用程序,而不是主机应用程序的子控件/窗口,就像Chrome/IE8一样.

(对于任何感兴趣的人,Scott Hanselmann 在这里IE8多进程架构写了一篇很好的介绍.)

[更新]

进一步来说:

一个单独的"子流程"如何直接呈现给"主流程"中的UI?这实际上是发生了什么,或者正如评论中所建议的那样,子流程是否使用IPC来请求主流程为其呈现?

.net user-interface google-chrome process internet-explorer-8

5
推荐指数
2
解决办法
3312
查看次数