为什么事件处理程序会同时输出其所有操作?

Why does an event handler output all of its actions at the same time?

我希望当按钮被按下时,两个数字1在文本框中以半秒的间隔显示

但是如果你按照我的例子做所有事情,两个数字会在半秒内同时显示

  private void Button_Click(object sender, RoutedEventArgs e)
        {
            Checker.Text += "1";

            System.Threading.Thread.Sleep(500);

            Checker.Text += "1";
        }

任何事件处理程序中的任何循环都会发生同样的情况

Thread.Sleep() 调用将阻塞 Dispatcher 线程。它是更新您的 UI 的线程,为了执行您想要的操作,您需要 运行 后台工作线程,或者更简单地使用 Async/Await 语法

  private async void Button_Click(object sender, RoutedEventArgs e)
    {
        Checker.Text += "1";

        await Task.Delay(500);

        Checker.Text += "1";
    }