Google Chrome и IE8 (среди прочих) стремятся обеспечить большую надежность / стабильность, изолируя каждую вкладку (веб-страницу) в отдельном процессе (слишком упрощенно, я знаю).
Это может показаться гораздо более тяжелым, чем многопоточность, но имеет главное преимущество - сбой в одном процессе, не приводящий к сбою всего приложения.
Кажется, архитектура с несколькими процессами уже давно используется в серверных приложениях (например, веб-серверах), но это процессы без выделенного графического интерфейса пользователя. Интересно, что теперь он используется в пользовательских интерфейсах настольных приложений.
Как бы я реализовал это, скажем, в приложении Windows Forms .NET? Это вообще возможно?
Process.Start () - это очевидное первое место для поиска, но графический интерфейс нового процесса тесно не интегрирован с графическим интерфейсом хост-приложения. Это новое отдельное приложение, а не вспомогательный элемент управления / окно хост-приложения, как в Chrome / IE8.
(Для всех, кто заинтересован, Скотт Хансельманн написал хорошее введение в многопроцессную архитектуру IE8 здесь .)
[Update]
Более конкретно:
Как отдельный «подпроцесс» может отображаться непосредственно в пользовательском интерфейсе в «основном процессе»? Это на самом деле то, что происходит, или, как было предложено в комментариях, подпроцесс использует IPC, чтобы запросить основной процесс для этого?