zoukankan      html  css  js  c++  java
  • WPF中异步更新UI元素

    XAML

    界面很简单,只有一个按钮和一个lable元素,要实现点击button时,lable的内容从0开始自动递增。

    <Grid>
        <Label Name="lable_plus" Content="0"/>
        <Button Content="Button"  Click="button_Click" Height="23"  Name="button" Width="75" />
    </Grid>

    C#

    private void button_Click(object sender, RoutedEventArgs e)
    {
         for (int i = 0; i < 100000; i++)
         {                
             lable_plus.Content = i;
         }
    }

    上面的代码执行后会发现,点击按钮并不会看到;lable中数字递增,而是稍等片刻后,直接出现99999。原因在于UI线程被阻塞用以计算循环 i++ 了。

    方法一:

    private void te_Click(object sender, RoutedEventArgs e)
    {
           update();            
    }
    
    public delegate void PlusNumberDelegate(int i);
    
    private void update()
    {
          for (int i = 0; i < 100000; i++)
         {                
               this.lable_plus.Dispatcher.BeginInvoke(
                        DispatcherPriority.SystemIdle,
               new NextNumber(this.plus),i);
         }
    }

    参考 http://msdn.microsoft.com/zh-cn/library/ms741870.aspx

    方法二:

    实得分

  • 相关阅读:
    困扰多年的eclipse项目编码问题!
    什么是专注?什么是执行力?
    关于图表的理解
    去重与替换
    pandas 文本操作
    pandas 数值计算
    DatetimeIndex 时间序列
    Datatime 时间模块
    Numpy 常用方法
    Python迭代器 Iterator
  • 原文地址:https://www.cnblogs.com/kelsen/p/3928347.html
Copyright © 2011-2022 走看看