C # - Alternativa a Thread.Sleep?

Estoy haciendo todo esto en C #, en Visual Studio 2008.

Quiero ralentizar el trabajo de mi algoritmo para que el usuario pueda ver su trabajo. Hay un cambio periódico visible en la GUI, así que agregué "thread.sleep" después de cada instancia.

Problem es que "thread.sleep", cuando se configura al menos un segundo, después de algunas instancias de "thread.sleep" (después de algunos bucles) simplemente congela toda la GUI y la mantiene así hasta que se completa el programa. No de inmediato, pero siempre sucede. Qué tan pronto depende de la duración del sueño.

Tengo pruebas de que todo el programa no se congela, está funcionando, incluso el sueño está haciendo pausas de la duración correcta. Pero la GUI se congela en cierto punto hasta que finaliza el algoritmo, en ese punto muestra el estado final correcto.

¿Cómo resolver este problema? ¿Alternativa al algoritmo de pausa en cierto punto?

Respuestas a la pregunta(4)

Su respuesta a la pregunta