Thread.Sleep não parece ser compatível com .NET para aplicativos da Windows Store.
Por exemplo, este
System.Threading.Thread.Sleep(1000);
irá compilar ao direcionar qualquer .NET Framework (2.0, 3.5, 4.0, 4.5), mas não ao direcionar o .NET para aplicativos da Windows Store (ou em uma biblioteca de classes portátil que direciona 4.5 e store).
System.Threading.Thread ainda está lá, mas não tem o método Sleep.
Eu preciso atrasar algo por alguns segundos no meu aplicativo, há um substituto adequado?
EDITAR por que o atraso é necessário: Meu aplicativo é um jogo e o atraso é para fazer parecer que o oponente do computador está "pensando" em seu próximo movimento. O método já é chamado de forma assíncrona (thread principal não está bloqueado), eu só quero diminuir o tempo de resposta.
Monitor
aula? Você pode usar oWait
método com um tempo limite para simular um sono.Thread.Sleep
para a lata de lixo de tecnologia ruim.Respostas:
Os aplicativos da Windows Store adotam a assincronia - e uma "pausa assíncrona" é fornecida por
Task.Delay
. Portanto, em um método assíncrono, você escreveria:... ou qualquer atraso que você quiser. O método assíncrono continuará 30 segundos depois, mas o thread não será bloqueado, assim como para todas as
await
expressões.fonte
.RunSynchronously()
se necessário.Thread.Sleep
é compatível com .NET 3.5, então a pergunta não se aplica. Sem dúvida você tem uma pergunta, mas não parece a mesma que esta aqui. Leia tinyurl.com/stack-hints e faça uma nova pergunta.Odeio dizer o óbvio, mas no caso de alguém querer uma única linha
System.Threading.Tasks.Task.Delay(3000).Wait()
fonte
Eu simplesmente tive o mesmo problema e encontrei outra solução interessante que gostaria de compartilhar com vocês. Se você realmente quiser bloquear o tópico, eu faria assim (obrigado @Brannon pela dica "slim"):
fonte
MainPage.xaml.cs
fonte
Quase NENHUMA razão (exceto para fins de teste) SEMPRE usar
Thread.Sleep()
.SE (e somente se) você tiver um bom motivo para enviar um thread para dormir, você pode querer verificar
Task.Delay()
, que você pode aguardar para "esperar" por um tempo especificado. Embora nunca seja uma boa ideia ter um fio parado e não fazer nada. Prática ruim ...fonte