Hola astrow25
 
Eso lo haces con 
backgroundWorker agregar un control backgroundWorker a tu formulario, y el codigo de ejecución de tu tarea lo agregas ahi, al DoWork, y lo mandas a ejecutar. 
Algo asi.  
Código:
 
private void button_Lanzar_Click(object sender, EventArgs e)
{
     panel_Mensaje.Visible = true;
     backgroundWorker_Tarea.RunWorkerAsync();
}
  Por ejemplo a mi se me ocurre que en un panel antes de ejecutar el background muestre un GIF con un reloj de procesando, cuando termine el background, ocultas el GIF, por que tu tarea termino. 
Espero te sirva. 
Suerte.