Вкладки в их собственном процессе с C # и WinForms

Возможный дубликат
   Приложение Windows Forms, такое как Google Chrome с несколькими процессами < ш>    Многопроцессорный дизайн Chrome/IE8, возможно ли это в .NET?
   Пример для многопроцессного приложения C#, такого как Google Chrome </а> </р>

Оба браузера IE8 и Google Chrome имеют отдельные процессы для каждой открываемой вкладки .

Например, вы запускаете IE8 и открываете Yahoo и Google на своих вкладках, в итоге вы получаете 3 процесса в вашей системе:

  • IE8 itself process [master process]
    • Google tab process
    • Yahoo tab process

Я играю с идеей подобной вещи в C #/WinForms.

Возьмем простой пример: у меня есть мастер-процесс, который показывает форму, и у меня есть кнопка в дочернем процессе. Как мы можем отнести кнопку из другого процесса в мою форму?

7

2 ответы

Это не похоже на такую ​​хорошую идею. Общие элементы управления winforms по большей части не являются потокобезопасными, и каждый элемент управления сам по себе кажется нелепым.

Если вы хотите попробовать это, возможно, придать каждой форме собственный процесс или даже просто собственный поток. Или, возможно, если у вас есть элемент управления вкладкой, просто дайте каждой вкладке собственный поток.

Update
.Net provides something called an AppDomain that you can use. It's more than a thread, but less than a process. If you have a from with multiple tab pages, you could create a custom control that holds the contents for each tab page and put each custom control in it's own assembly. Then those assemblies can be dynamically loaded into their own AppDomains. From there you should be able to create an instance of the control you want. However, there are certain rules about talking across appdomains, so I don't know that you'd be able to just add that control to a tab page on your form.

1
добавлено
Джоэл, спасибо за ответ. 1 нить на вкладку не будет работать, она побеждает цель песочницы каждой вкладки в своем собственном процессе, предотвращая ее от сбоя или замораживания родительского процесса. См. Ответ Райана о песочнице.
добавлено автор Judah Himango, источник

Причина, по которой хром дает каждой вкладке собственный процесс, - это песочница. Если одна вкладка ведет себя странно, она вряд ли удалит весь браузер. Есть ли аналогичная потребность в вашем приложении?

Также обратите внимание, что вкладкам браузера не нужно обмениваться информацией. То, что находится на вкладке, находится на вкладке, и никакая другая вкладка не должна заботиться об этом. Является ли ваше приложение winforms одинаково разделенным?

0
добавлено
Спасибо за ответ. Я понимаю правильные рассуждения за песочницей. Мое приложение аналогичным образом разделено, с вкладками, которые не обязательно должны знать друг о друге, и все не должно быть в состоянии вывести из строя родительский процесс.
добавлено автор Judah Himango, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot