请参阅本文底部的代码。应该将“ 3”添加到列表框中,然后在第二秒添加“ 2”,然后在第二秒添加“ 1”,然后运行程序的主代码。但是,一旦我执行该程序,它就会保持空白3秒,然后显示所有3、2和1,然后直接启动所有代码。我想直观地看到每个数字都会延迟一秒钟。我该怎么做呢?

private void Main()
        {
            countdown();
            //Main Code
        }

private void countdown()
        {
            listBox1.Items.Clear();
            listBox1.Items.Add("3");
            System.Threading.Thread.Sleep(1000);
            listBox1.Items.Add("2");
            System.Threading.Thread.Sleep(1000);
            listBox1.Items.Add("1");
            System.Threading.Thread.Sleep(1000);
            listBox1.Items.Clear();
        }

最佳答案

异步/等待救援:

private async void OnButtonClick(object sender, EventArgs e)
{
    listBox1.Items.Clear();
    listBox1.Items.Add("3");
    await Task.Delay(1000);

    listBox1.Items.Add("2");
    await Task.Delay(1000);

    listBox1.Items.Add("1");
    await Task.Delay(1000);

    listBox1.Items.Clear();
}

关于c# - Thread.Sleep()的另一种选择是暂时挂起程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32608476/

10-09 04:22