Guias em seu próprio processo com C # e WinForms

Possível duplicata </​​strong>
   Aplicativo do Windows Forms como o Google Chrome com vários processos < br>    O design multi-processo do Chrome/IE8, é possível em .NET?
   Exemplo de aplicativo C# de processo múltiplo como o Google Chrome

Tanto o IE8 quanto o navegador Google Chrome têm processos separados para cada guia que é aberta .

Por exemplo, você inicia o IE8 e abre o Yahoo e o Google em suas próprias guias. Você acaba com três processos em execução no seu sistema:

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

Estou brincando com a ideia de algo semelhante em C #/WinForms.

Tome um exemplo simples: eu tenho um processo mestre que mostra um formulário e tenho um botão em um processo filho. Como podemos processar o botão do outro processo no meu formulário?

7

2 Respostas

Isso não parece uma boa ideia. Os controles comuns do WinForms não são, na maioria das vezes, thread-safe, e dar a cada controle seu próprio processo parece nojento.

Se você quiser tentar isso, talvez dê a cada formulário seu próprio processo, ou até mesmo o próprio tópico. Ou talvez, se você tiver um controle de guia, apenas dê a cada guia seu próprio segmento.

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
adicionado
Joel, obrigado pela resposta. 1 thread por guia não funciona, ele acaba com o propósito de criar um sandbox em cada guia em seu próprio processo, evitando que ele quebre ou congele o processo pai. Veja a resposta de Ryan sobre sandboxing.
adicionado o autor Judah Himango, fonte

O motivo pelo qual o Chrome dá a cada guia seu próprio processo é o sandbox. Se uma guia se comportar de forma errônea, é menos provável que ela destrua todo o navegador. Existe uma necessidade semelhante no seu aplicativo?

Além disso, observe que as guias do navegador não precisam compartilhar informações. O que está em uma guia está em uma guia e nenhuma outra guia precisa se preocupar com isso. Seu aplicativo winforms está dividido de forma semelhante?

0
adicionado
Obrigado pela resposta. Eu entendo o raciocínio válido por trás do sandbox. Meu aplicativo é dividido de maneira semelhante, com guias que não precisam ser conhecidas, e nem todas devem poder causar falhas no processo pai.
adicionado o autor Judah Himango, fonte