代码在线程休眠之前没有执行?

73e*_*est 3 .net c# multithreading winforms

我这样做:

clear();
coinRefundComplete.Visible = true;
state = 0;

System.Threading.Thread.Sleep(4000);
clear();

greeting.Visible = true;
rate.Visible = true;
refundTicket.Visible = true;
currentTime.Visible = true;
Run Code Online (Sandbox Code Playgroud)

我希望coinRefundCompleteText(它是一个标签)出现4秒钟,然后通过我用clear()定义的方法清除,然后发生其他一些事情.相反,在我用第一个clear()清除我的表单后,我的表单空白4秒,然后正确完成.

Fab*_*bio 11

使用async/await方法.
制作你的方法async- 下面是按钮点击的事件处理程序示例

private async void ButtonClick(object sender, EventArgs e)
{
    clear();
    coinRefundComplete.Visible = true;
    state = 0;

    await Task.Delay(4000);
    clear();

    greeting.Visible = true;
    rate.Visible = true;
    refundTicket.Visible = true;
    currentTime.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)

在线await Task.Delay(4000);UI线程将被释放,这将更新之前所做的所有更改.4秒后,方法将继续在UI线程上执行.