为什么async会拒绝睡眠等待?

时间:2022-12-17 14:33:10
代码很简单,为的只是了解一下C#的新特性。
让按钮去call DoSomeThing()
为什么会一点下去。就直接不Sleep就MessageBox.Show("休息了5秒");

        private  void  button1_Click(object sender, EventArgs e)
        {
             DoSomeThing();
        }
        async Task DoSomeThing() {   
            Thread.Sleep(5);MessageBox.Show("休息了5秒");
            await Task.Delay(TimeSpan.FromSeconds(3)); MessageBox.Show("休息了3秒");
            await Task.Delay(TimeSpan.FromSeconds(4)); MessageBox.Show("又休息了4秒");
        }

4 个解决方案

#1


Task.Run(DoSomeThing);

DoSomeThing 只能在异步回调中去调用执行,不能同步调用。

#2


Thread.Sleep(毫秒)

#3


引用 2 楼 owlgame 的回复:
Thread.Sleep(毫秒)

11111111111111

#4


大半夜写代码,漏掉3个零都不知道。 为什么async会拒绝睡眠等待?
怎么结贴?

#1


Task.Run(DoSomeThing);

DoSomeThing 只能在异步回调中去调用执行,不能同步调用。

#2


Thread.Sleep(毫秒)

#3


引用 2 楼 owlgame 的回复:
Thread.Sleep(毫秒)

11111111111111

#4


大半夜写代码,漏掉3个零都不知道。 为什么async会拒绝睡眠等待?
怎么结贴?