为啥事件处理程序会同时输出其所有操作? [复制]
Posted
技术标签:
【中文标题】为啥事件处理程序会同时输出其所有操作? [复制]【英文标题】:Why does an event handler output all of its actions at the same time? [duplicate]为什么事件处理程序会同时输出其所有操作? [复制] 【发布时间】:2021-09-22 16:03:01 【问题描述】:我希望当按下按钮时,在文本框中以半秒的间隔显示两个数字一
但如果你按照我的例子做所有事情,两个数字会在半秒内同时显示
private void Button_Click(object sender, RoutedEventArgs e)
Checker.Text += "1";
System.Threading.Thread.Sleep(500);
Checker.Text += "1";
任何事件处理程序中的任何循环都会发生同样的情况
【问题讨论】:
【参考方案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";
【讨论】:
以上是关于为啥事件处理程序会同时输出其所有操作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章