zoukankan      html  css  js  c++  java
  • Silverlight中 非UI线程更新UI 的几种方法

    Silverlight中 非UI线程更新UI 的几种方法:Delegate, AsyncOperation,BackgroundWorker 
    首先列一下基础代码: 

    <UserControl 
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
        mc:Ignorable="d" 
        x:Class="Shareach.TestUI.UCThreadUpdate" 
        d:DesignWidth="250" d:DesignHeight="120"> 
    <StackPanel> 
    <TextBlock x:Name="txtCalc" /> 
    </StackPanel> 
    </UserControl>
    using System; 
    using System.Windows; 
    using System.Windows.Controls; 
    using System.Windows.Documents; 
    using System.Windows.Ink; 
    using System.Windows.Input; 
    using System.Windows.Media; 
    using System.Windows.Media.Animation; 
    using System.Windows.Shapes; 
    using System.Threading; 
    namespace Shareach.TestUI 

        public partial class UCThreadUpdate: UserControl 
        { 
           public UCMsgSend() 
           { 
                  InitializeComponent(); 
                  ThreadUpdate(); 
           } 
           void ThreadUpdate() 
           { 
                 Thread thread = new Thread(new ThreadStart(DoWork)); 
                  thread.Start(); 
           } 
           void DoWork() 
           { 
                  int i=0; 
                  while(i<100){ 
                         DoShow(i);  
                  } 
           } 
        } 
    }

    DoShow的三种写法 
    1. delegate

    void DoShow(i){ 
        this.Dispatcher.BeginInvoke( 
                                delegate { 
                                       txtCalc.Text = string.format(“result “{0}”,i); 
                                }); 
    }

    2.AsyncOperation

    void DoShow(i){ 
        //这个可以写成成员变量,我这里只是为了好区分 
        System.ComponentModel.AsyncOperation asyncOper = System.ComponentModel.AsyncOperationManager.CreateOperation(null); 
        asyncOper.Post(result => 
                { 
                    txtCalc.Text = string.format(“result “{0}”,i); 
                }, null); 
    }

    3.BackgroundWorker

    Winform 也一样,

  • 相关阅读:
    DButils工具类能够用来获取数据库连接向数据库插入更新删除对象
    Android 实现ActionBar定制
    查看CentOs6.5/7的系统版本号
    安装Was liberty之步骤
    在centOS上安装VNC
    SCP远程拷贝命令
    Was liberty资料总结
    罗杰斯:做你喜欢的工作,你会变成个有钱人
    【Java/csv】一个CSV文件解析类(转载)
    当你的才华还撑不起你的野心时,那你就应该静下心来学习。
  • 原文地址:https://www.cnblogs.com/Areas/p/2193361.html
Copyright © 2011-2022 走看看