为什么事件处理程序会同时输出其所有操作?
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";
}
我希望当按钮被按下时,两个数字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";
}