Thread.Sleep () sin congelar la interfaz de usuario

En primer lugar, soy un principiante en C# y me gustaría hacer esto:

 class2.method_79(null, RoomItem_0, num, num2, 0, false, true, true); System.Threading.Thread.Sleep(250); class2.method_79(null, RoomItem_0, num, num4, 0, false, true, true); System.Threading.Thread.Sleep(300); class2.method_79(null, RoomItem_0, num, num6, 0, false, true, true); 

Pero esta solución congela la IU, ¿cómo podría hacer que el segundo evento ocurra 250ms después del primero, etc. sin congelar la IU?

La forma más sencilla de usar sleep sin congelar el subproceso de la interfaz de usuario es hacer que el método sea asincrónico. Para que su método sea asincrónico, agregue el modificador asíncrono .

 private void someMethod() 

a

 private async void someMethod() 

Ahora puede usar el operador de espera para realizar tareas asíncronas, en su caso.

 await Task.Delay(milliseconds); 

Esto lo convierte en un método asíncrono y se ejecutará de forma asincrónica desde su subproceso de interfaz de usuario.

Tenga en cuenta que esto solo es compatible con Microsoft .NET framework 4.5 y superior.

.

Puede usar un temporizador de despachador para sincronizar su ejecución de métodos.

Está en el hilo de la interfaz de usuario cuando llama .Sleep(); .

Es por eso que está congelando la IU. Si necesita hacer esto sin congelar la UI, necesitará ejecutar el código en hilos separados.

Ejecuta tus tareas que consumen mucho tiempo en un hilo separado. Evite las tareas que consumen mucho tiempo y Thread.Sleep() en el hilo de UI.