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

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

IE8和谷歌浏览器浏览器都为每个打开的选项卡分别设置了进程 。

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

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

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

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

这听起来不是一个好主意。 winforms常用控件在很大程度上不是线程安全的,并且给每个控件它自己的进程看起来很蹩脚。

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

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

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

另请注意,浏览器标签不需要共享信息。 选项卡上的选项卡位于选项卡上,没有其他选项卡需要关注它。 您的winforms应用程序是否同样划分?