我正在基于await/sleep范例编写一个网络绑定(bind)的应用程序。
有时会发生连接错误,以我的经验,等待一段时间然后再次重试操作是值得的。
问题是,如果我在wait/async中使用Thread.Sleep或其他类似的阻止操作,它将阻止调用者线程中的所有 Activity 。
我应该将Thread.Sleep(10000)替换为什么以实现与以下相同的效果
await Thread.SleepAsync(10000)
?
更新
我希望这样做而不创建任何其他线程的答案
最佳答案
建议启动新线程的其他答案是个坏主意-根本不需要这样做。 async
/await
的部分要点是减少应用程序所需的线程数。
您应该改为使用 Task.Delay
,它不需要新线程,并且正是为此目的而设计的:
// Execution of the async method will continue one second later, but without
// blocking.
await Task.Delay(1000);
关于c# - 如何获得等待的Thread.Sleep?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13429707/