Possible duplicate
Windows Forms application like Google Chrome with multiple processes
Chrome / IE8 multi-process design, is it possible in .NET?
Sample for Multi-process C# app like Google Chrome
И IE8, и браузер Google Chrome имеют отдельные процессы для каждой открытой вкладки.
Например, вы запускаете IE8 и открываете Yahoo и Google на их вкладках, в результате в вашей системе работают 3 процесса:
Я играю с идеей аналогичной вещи в C# / WinForms.
Возьмем простой пример: у меня есть главный процесс, который показывает форму, и у меня есть кнопка в дочернем процессе. Как мы можем отобразить кнопку из другого процесса в моей форме?





Это не похоже на такую хорошую идею. Общие элементы управления winforms по большей части не являются потокобезопасными, и предоставление каждому элементу управления собственного процесса кажется неприятным.
Если вы хотите попробовать это, возможно, дайте каждому форма собственный процесс или даже просто его собственный поток. Или, возможно, если у вас есть элемент управления вкладками, просто дайте каждой вкладке отдельный поток.
Обновлять
.Net предоставляет нечто, называемое AppDomain, которое вы можете использовать. Это больше, чем поток, но меньше, чем процесс. Если у вас есть from с несколькими страницами вкладок, вы можете создать настраиваемый элемент управления, содержащий содержимое для каждой страницы вкладки, и поместить каждый настраиваемый элемент управления в свою собственную сборку. Затем эти сборки можно динамически загружать в их собственные домены приложений. Оттуда вы сможете создать экземпляр нужного элемента управления. Однако существуют определенные правила взаимодействия между доменами приложений, поэтому я не знаю, можно ли просто добавить этот элемент управления на страницу вкладки в форме.
Причина, по которой Chrome предоставляет каждой вкладке отдельный процесс, - это песочница. Если одна вкладка ведет себя ошибочно, маловероятно, что весь браузер выйдет из строя. Есть ли в вашем приложении аналогичная потребность?
Также обратите внимание, что вкладки браузера не должны передавать информацию. То, что находится на вкладке, находится на вкладке, и никакая другая вкладка не должна об этом заботиться. Ваше приложение winforms разделено одинаково?
Спасибо за ответ. Я понимаю веские причины использования песочницы. Мое приложение разделено аналогичным образом, с вкладками, которым не нужно знать друг о друге, и все они не должны иметь возможности сбой родительского процесса.
Джоэл, спасибо за ответ. 1 поток на вкладку не будет работать, он лишает смысла изолировать каждую вкладку в отдельном процессе, предотвращая его сбой или замораживание родительского процесса. См. Ответ Райана о песочнице.