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

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

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

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

  • IE8 сам процесс [мастер-процесс]
    • Процесс вкладки Google
    • Процесс загрузки вкладки Yahoo

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

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

c#,winforms,process,

7

Ответов: 2


1

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

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

Update
.Net предоставляет что-то, называемое AppDomain, которое вы можете использовать. Это больше, чем поток, но меньше, чем процесс. Если у вас есть с несколькими страницами вкладок, вы можете создать собственный элемент управления, который содержит содержимое каждой страницы вкладки и поместить каждый пользовательский элемент управления в свою собственную сборку. Затем эти сборки могут динамически загружаться в собственные AppDomains. Оттуда вы сможете создать экземпляр элемента управления, который вы хотите. Тем не менее, есть определенные правила о разговоре в приложениях, поэтому я не знаю, что вы сможете просто добавить этот элемент управления на вкладку в своей форме.


0

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

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

C #, WinForms, процесс,
Похожие вопросы