我正在编写一个基于await/sleep范例的网络绑定应用程序.
有时会发生连接错误,根据我的经验,等待一段时间再重试操作是值得的.
问题是,如果我在await/async中使用Thread.Sleep或类似的阻塞操作,它会阻止调用程序线程中的所有活动.
我应该用什么来替换Thread.Sleep(10000)以获得相同的效果
await Thread.SleepAsync(10000)
Run Code Online (Sandbox Code Playgroud)
?
UPDATE
我更喜欢一个没有创建任何额外线程的答案
我经常看到它提到Thread.Sleep();不应该使用,但我不明白为什么会这样.如果Thread.Sleep();可能造成麻烦,是否有任何替代解决方案具有相同的安全性?
例如.
while(true)
{
doSomework();
i++;
Thread.Sleep(5000);
}
Run Code Online (Sandbox Code Playgroud)
另一个是:
while (true)
{
string[] images = Directory.GetFiles(@"C:\Dir", "*.png");
foreach (string image in images)
{
this.Invoke(() => this.Enabled = true);
pictureBox1.Image = new Bitmap(image);
Thread.Sleep(1000);
}
}
Run Code Online (Sandbox Code Playgroud)