2008-10-14 25 views
7

posible duplicado
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 Chromeaquí en su propio proceso con C# y WinForms

Tanto el navegador Internet Explorer 8 y Google Chrome tiene separate processes for each tab that is opened.

Por ejemplo, iniciar IE8 y abrir Yahoo y Google en sus propias fichas, se termina con 3 procesos que se ejecutan en el sistema:

  • IE8 propio proceso [proceso maestro]
    • Google pestaña proceso
    • proceso de pestañas Yahoo

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?

Respuesta

1

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 desea probar esto, tal vez le dé a cada forma 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.

actualización
.Net ofrece algo que se llama un dominio de aplicación que puede utilizar. Es más que un hilo, pero menos que un proceso. Si tiene una página con múltiples pestañas, puede crear un control personalizado que contenga los contenidos para cada página de pestañas y poner cada control personalizado en su propio ensamblaje. Entonces esos ensamblados se pueden cargar dinámicamente en sus propios AppDomains. Desde allí, debería poder crear una instancia del control que desee. Sin embargo, existen ciertas reglas sobre cómo hablar entre aplicaciones, por lo que no sé si podrá agregar ese control a una página de pestañas en su formulario.

+0

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. –

0

La razón por la que 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

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. –

Cuestiones relacionadas