如何获得等待Thread.Sleep?

我正在写一个基于await / sleep范例的networking绑定应用程序。

有时会发生连接错误,根据我的经验,等待一段时间,然后再次重试操作是值得的。

问题是,如果在await / async中使用Thread.Sleep或类似的阻塞操作,它会阻塞调用者线程中的所有活动。

我应该用什么来取代Thread.Sleep(10000)来达到同样的效果

await Thread.SleepAsync(10000) 

UPDATE

我更喜欢这样做的答案,而不创build任何额外的线程

One Solution collect form web for “如何获得等待Thread.Sleep?”

其他答案build议开始一个新的线程是一个坏主意 – 根本没有必要这样做。 async / await减less应用程序需要的线程数量。

你应该使用Task.Delay不需要一个新的线程,而是专门为此目的而devise的:

 // Execution of the async method will continue one second later, but without // blocking. await Task.Delay(1000); 
  • 与HandlerThread通信的示例
  • 避免在Java中同步(this)?
  • errno是线程安全的吗?
  • primefaces更新..在Postgres中select
  • TPL和asynchronous/等待(线程处理)之间的区别
  • primefacesvariables是否是无锁的?
  • GCD,线程,程序stream和UI更新
  • 线程和进程与multithreading和多核/多处理器:它们是如何映射的?
  • 处理来自Java ExecutorService任务的exception
  • 核心数据和线程/ Grand Central Dispatch
  • 如何在基于servlet的Web应用程序中运行后台任务?