Thread.Sleep no parece ser compatible con .NET para las aplicaciones de la Tienda Windows.
Por ejemplo, este
System.Threading.Thread.Sleep(1000);
se compilará cuando se dirija a cualquier .NET Framework (2.0, 3.5, 4.0, 4.5), pero no cuando se oriente a .NET para aplicaciones de la Tienda Windows (o en una biblioteca de clases portátil que tenga como destino 4.5 y tienda).
System.Threading.Thread sigue ahí, simplemente no tiene el método Sleep.
Necesito retrasar algo durante unos segundos en mi aplicación, ¿hay un reemplazo adecuado?
EDITAR por qué es necesario el retraso: Mi aplicación es un juego y el retraso es para que parezca que el oponente de la computadora está "pensando" en su próximo movimiento. El método ya se llama asincrónicamente (el hilo principal no está bloqueado), solo quiero ralentizar el tiempo de respuesta.
Monitor
clase? Puede utilizar elWait
método con un tiempo de espera para simular un sueño.Thread.Sleep
al basurero de la mala tecnología.Respuestas:
Las aplicaciones de la Tienda Windows adoptan la asincronía, y proporciona una "pausa asincrónica"
Task.Delay
. Entonces, dentro de un método asincrónico, escribirías:... o el retraso que quieras. El método asincrónico continuará 30 segundos después, pero el hilo no se bloqueará, como ocurre con todas las
await
expresiones.fuente
.RunSynchronously()
si es necesario.Thread.Sleep
es compatible con .NET 3.5, por lo que la pregunta no se aplica. Sin duda tienes una pregunta, pero no parece que sea lo mismo que esta. Lea tinyurl.com/stack-hints y luego haga una nueva pregunta.Odio decir lo obvio, pero en caso de que alguien quisiera una sola línea
System.Threading.Tasks.Task.Delay(3000).Wait()
fuente
Simplemente tuve el mismo problema y encontré otra solución interesante que quería compartir con ustedes. Si realmente quieres bloquear el hilo, lo haría así (gracias @Brannon por la sugerencia "delgada"):
fuente
MainPage.xaml.cs
fuente
Casi NINGUNA razón (excepto con fines de prueba) para el uso NUNCA
Thread.Sleep()
.SI (y solo si) tiene una muy buena razón para enviar un hilo a dormir, es posible que desee verificar
Task.Delay()
, que puede esperar para "esperar" durante un tiempo específico. Aunque nunca es una buena idea tener un hilo suelto y no hacer nada. Mala práctica ...fuente