Pestañas en su propio proceso con C # y WinForms

Posible duplicado
   Aplicación Windows Forms como Google Chrome con múltiples procesos < br>    Diseño multiproceso de Chrome/IE8, ¿es posible en .NET?
   Ejemplo de aplicación C-multiprocesador como Google Chrome

Tanto IE8 como el navegador Google Chrome tienen procesos separados para cada pestaña que se abre .

Por ejemplo, si inicia IE8 y abre Yahoo y Google en sus propias pestañas, termina con 3 procesos ejecutándose en su sistema:

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

Estoy jugando con la idea de algo similar en C #/WinForms.

Tome un ejemplo simple: tengo un proceso maestro que muestra un formulario, y tengo un botón en un proceso secundario. ¿Cómo podemos renderizar el botón del otro proceso en mi formulario?

7

2 Respuestas

Eso no parece una buena idea. Los controles comunes de winforms en su mayoría no son seguros para subprocesos, y dar a cada control su propio proceso parece asqueroso.

Si quieres probar esto, quizás le des a cada formulario su propio proceso, o incluso solo su propio hilo. O tal vez si tiene un control de pestañas, simplemente dele a cada pestaña su propio hilo.

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
agregado
Joel, gracias por la respuesta. 1 subproceso por ficha no funcionará, se anula el objetivo de poner en una zona de pruebas cada pestaña en su propio proceso, evitando que se bloquee o congele el proceso principal. Vea la respuesta de Ryan sobre sandboxing.
agregado el autor Judah Himango, fuente

La razón por la cual Chrome le da a cada pestaña su propio proceso es sandboxing. Si una pestaña se comporta de forma incorrecta, es menos probable que elimine todo el navegador. ¿Hay alguna necesidad similar en tu aplicación?

Además, tenga en cuenta que las pestañas del navegador no necesitan compartir información. Lo que está en una pestaña está en una pestaña y ninguna otra pestaña necesita preocuparse por ello. ¿Tu aplicación de winforms está dividida de manera similar?

0
agregado
Gracias por la respuesta. Entiendo el razonamiento válido detrás de sandboxing. Mi aplicación está dividida de manera similar, con pestañas que no necesitan conocerse entre sí, y todas no deberían poder bloquear el proceso principal.
agregado el autor Judah Himango, fuente