我正在基于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/

10-11 22:33
查看更多