相关疑难解决方法(0)

如何获得等待的Thread.Sleep?

我正在编写一个基于await/sleep范例的网络绑定应用程序.

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

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

我应该用什么来替换Thread.Sleep(10000)以获得相同的效果

await Thread.SleepAsync(10000)
Run Code Online (Sandbox Code Playgroud)

UPDATE

我更喜欢一个没有创建任何额外线程的答案

.net c# multithreading async-await

120
推荐指数
1
解决办法
4万
查看次数

为什么Thread.Sleep如此有害

我经常看到它提到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)

c# multithreading sleep

117
推荐指数
6
解决办法
17万
查看次数

标签 统计

c# ×2

multithreading ×2

.net ×1

async-await ×1

sleep ×1