Estou escrevendo um aplicativo vinculado à rede com base no paradigma de espera / suspensão.
Às vezes, erros de conexão acontecem e, na minha experiência, vale a pena esperar um pouco e tentar novamente a operação novamente.
O problema é que, se eu usar o Thread.Sleep ou outra operação de bloqueio semelhante em wait / async, ele bloqueia toda a atividade no thread do chamador.
Com o que devo substituir o Thread.Sleep (10000) para obter o mesmo efeito que
await Thread.SleepAsync(10000)
?
ATUALIZAR
Prefiro uma resposta que faça isso sem criar nenhum tópico adicional
fonte
async
introdução útil. Quando o esperado retornado porTask.Delay
éawait
ed, uma vez que não está completo, o método atual retorna uma tarefa incompleta. Mais tarde, quando aDelay
conclusão (fora de um cronômetro, não de um encadeamento), o restante do método está agendado para execução. A continuação é executada em um "contexto" que pode retornar ao mesmo thread original - detalhes no meu blog.await
agendamento (eventualmente).