¿La mejor manera de mostrar un formulario de progreso mientras un método ejecuta código?

Tengo un método de carga de WinForm que demora mucho tiempo en recopilar algunos datos para mostrarlos al usuario.

Muestro un formulario con una fuente grande con la palabra "Cargando" mientras se ejecuta este método.

Sin embargo, a veces aparece este error y el formulario de progreso "Cargando" no se cierra y, finalmente, mi aplicación completa se cerrará:

Error al crear el manejador de la ventana. en System.Windows.Forms.NativeWindow.CreateHandle (CreateParams cp)

¿Hay una mejor manera de mostrar mi progreso / carga del formulario mientras ejecuto el código en el método de carga?

Este es mi código:

//I launch a thread here so that way the Progress_form will display to the user
//while the Load method is still executing code.  I can not use .ShowDialog here
//or it will block.

//Progress_form displays the "Loading" form    
Thread t = new Thread(new ThreadStart(Progress_form));  

t.SetApartmentState(System.Threading.ApartmentState.STA);
t.IsBackground = true;
t.Start();

//This is where all the code is that gets the data from the database.  This could
//take upwards of 20+ seconds.

//Now I want to close the form because I am at the end of the Load Method                         

try
{
   //abort the Progress_form thread (close the form)
   t.Abort();
   //t.Interrupt();
}
catch (Exception)
{
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta