Formularios en hilos separados en Visual Basic NET

En ocasiones tenemos una aplicación válida con 2 formularios, desde el primero en aparecer iniciamos el otro y, al cerrar el primer formulario, se cierra el segundo automáticamente. Pero en otras ocasiones puede interesarnos que el cierre del primer formulario no conlleve el cierre del segundo, es decir, que ambos formularios sean verdaderamente independientes y que ambos se inicien a la vez (al arrancar la aplicación).

El comportamiento descrito en el primer párrafo, habitual en las aplicaciones de Visual Basic .NET construidas por defecto, se debe a que ambos formularios se ejecutan en el mismo hilo del proceso principal por lo que, al cerrar el primer formulario, terminamos ese hilo y todo lo que en él tiene lugar, incluido el segundo formulario.

La solución a este problema pasa por crear 2 hilos separados, y ejecutar cada uno de los formularios en cada uno de los hilos, de esta manera los independizamos hasta el punto que podemos cerrar el primer formulario y el segundo no se ve afectado.

Aunque los programadores poco expertos puedan deducir del texto anterior que debe tratarse de un código muy complejo y difícil de entender, el código necesario para ello es corto y bastante sencillo:

  1. En primer lugar es necesario importar el espacio de nombres System.Threading que proporciona clases e interfaces que permiten la programación multiproceso.
  2. Después hay que crear un procedimiento Main() específico por código, en él se crean las 2 hebras o hilos diferentes, apuntadas hacia 2 procedimientos tambien distintos encargados de arrancar cada uno de los formularios.
Para comprender mejor este ejercicio, conviene recordar algunos conceptos básicos acerca de multitarea, procesos e hilos:

 
Pulsa aquí para ver el código completo en Visual Basic .NET.