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

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 процесса:

  • Сам процесс IE8 [главный процесс]
    • Процесс вкладки Google
    • Процесс вкладки Yahoo

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
0
2 667
2

Ответы 2

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

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

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

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

Judah Gabriel Himango 14.10.2008 19:47

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

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

Спасибо за ответ. Я понимаю веские причины использования песочницы. Мое приложение разделено аналогичным образом, с вкладками, которым не нужно знать друг о друге, и все они не должны иметь возможности сбой родительского процесса.

Judah Gabriel Himango 14.10.2008 19:43

Другие вопросы по теме