Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#和WinForms在自己的流程中创建选项卡_C#_Winforms_Process - Fatal编程技术网

使用C#和WinForms在自己的流程中创建选项卡

使用C#和WinForms在自己的流程中创建选项卡,c#,winforms,process,C#,Winforms,Process,可能的重复 IE8和谷歌Chrome浏览器都有 例如,您启动IE8并在其各自的选项卡中打开Yahoo和Google,您的系统将运行3个进程: IE8自身过程[主过程] 谷歌标签流程 雅虎标签流程 我在玩弄C#/WinForms中类似的东西 举一个简单的例子:我有一个显示表单的主进程,在子进程中有一个按钮。如何将另一个进程中的按钮渲染到我的窗体上?这听起来不是个好主意。winforms常用控件在很大程度上不是线程安全的,给每个控件分配自己的进程似乎很棘手 如果你想试试这个,也许给每个

可能的重复


IE8和谷歌Chrome浏览器都有

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

  • IE8自身过程[主过程]
    • 谷歌标签流程
    • 雅虎标签流程
我在玩弄C#/WinForms中类似的东西


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

这听起来不是个好主意。winforms常用控件在很大程度上不是线程安全的,给每个控件分配自己的进程似乎很棘手

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

更新

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

chrome为每个选项卡提供自己的进程的原因是沙箱。如果一个选项卡出现错误,则不太可能关闭整个浏览器。你的应用程序中是否有类似的需求


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

谢谢您的回答。我理解沙箱背后的正当理由。我的应用程序也有类似的划分,选项卡之间不需要相互了解,所有选项卡都不应该使父进程崩溃。Joel,谢谢你的回答。每个选项卡1个线程不起作用,它破坏了在其自己的进程中对每个选项卡进行沙箱处理的目的,从而防止其崩溃或冻结父进程。参见Ryan关于沙箱的回答。