7

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

IE8 和 Google Chrome 浏览器对于打开的每个选项卡都有单独的进程

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

  • IE8自身进程【主进程】
    • 谷歌标签过程
    • 雅虎标签流程

我在玩 C#/WinForms 中类似的东西的想法。

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

4

2 回答 2

1

这听起来不像是个好主意。winforms 通用控件大部分不是线程安全的,并且给每个控件自己的进程似乎很讨厌。

如果你想试试这个,也许给每个表单它自己的进程,甚至只是它自己的线程。或者,如果您有一个选项卡控件,那么只需为每个选项卡提供自己的线程。

Update
.Net 提供了可以使用的称为 AppDomain 的东西。它不仅仅是一个线程,而是一个进程。如果您有一个带有多个标签页的 from,您可以创建一个自定义控件来保存每个标签页的内容,并将每个自定义控件放在它自己的程序集中。然后可以将这些程序集动态加载到它们自己的 AppDomain 中。从那里您应该能够创建所需控件的实例。但是,关于跨 appdomains 的交谈有一些规则,所以我不知道您是否能够将该控件添加到表单上的选项卡页。

于 2008-10-14T15:37:45.810 回答
0

chrome 为每个选项卡提供自己的进程的原因是沙盒。如果一个选项卡的行为异常,则不太可能关闭整个浏览器。您的应用程序中是否有类似的需求?

另外,请注意浏览器选项卡不需要共享信息。选项卡上的内容就在选项卡上,没有其他选项卡需要关心它。您的 winforms 应用程序是否也有类似的划分?

于 2008-10-14T15:41:44.820 回答