我正在编写一个基于await / sleep范例的网络绑定应用程序。
有时会发生连接错误,根据我的经验,等待一段时间再重试操作是值得的。
问题是如果我在await / async中使用Thread.Sleep或类似的阻塞操作,它会阻止调用者线程中的所有活动。
我应该用什么来替换Thread.Sleep(10000)以获得与
相同的效果await Thread.SleepAsync(10000)
更新
我更喜欢这样做的答案而不创建任何额外的线程
答案 0 :(得分:257)
其他答案表明开始一个新线程是一个坏主意 - 根本没有必要这样做。 async
/ await
的部分要点是减少应用程序所需的线程数。
您应该使用{em>不需要新线程的Task.Delay
,并且是为此目的精确设计的:
// Execution of the async method will continue one second later, but without
// blocking.
await Task.Delay(1000);