【问题标题】: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";
        }

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

【问题讨论】:

    标签: c# wpf loops events event-handling


    【解决方案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";
        }
    

    【讨论】:

      猜你喜欢
      • 2016-08-24
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多