为啥事件处理程序会同时输出其所有操作? [复制]

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";
    

【讨论】:

以上是关于为啥事件处理程序会同时输出其所有操作? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 lmax 干扰器架构使用 2 个干扰器?

在 JavaScript 中清除事件处理程序有多重要? [复制]

文件事件处理器

java之十二 事 件 处 理

为啥单击事件处理程序会在页面加载后立即触发?

Flink的处理机制以及侧输出应用