Intente hacerlo con Sleep pero me pausa literalmente el programa
Lo apropiado sería decir que se pausa el hilo de la interfaz gráfica, precisamente por que estás ejecutando dicha orden (
System.Threading.Thread.Sleep) en dicho hilo. Aperte de eso, la función
System.MessageBox.Show también es una llamada bloqueante, es decir, que también bloquea el hilo, pero no me ha quedado claro si el primer mensaje quieres que sea bloqueante o no...
Deberías documentarte al respecto, y practicar, puesto que la programación asincrónica a corto o largo plazo forma parte necesaria de las necesidades de un programador...
Para resolver el problema que has expuesto bien puedes solucionarlo de forma simple y sencilla mediante el uso de la clase
System.Threading.Tasks.Task:
private void MostrarMensaje() {
Task t
= new Task
(() => { MessageBox.Show("Mensaje 1");
Thread.Sleep(TimeSpan.FromMinutes(1));
MessageBox.Show("Mensaje 2");
});
t.Start();
}
Saludos.