博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Silverlight中 非UI线程更新UI 的几种方法
阅读量:5249 次
发布时间:2019-06-14

本文共 1580 字,大约阅读时间需要 5 分钟。

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 也一样,

转载于:https://www.cnblogs.com/Areas/archive/2011/09/27/2193361.html

你可能感兴趣的文章
利用AOP写2PC框架(二)
查看>>
【动态规划】skiing
查看>>
java定时器的使用(Timer)
查看>>
ef codefirst VS里修改数据表结构后更新到数据库
查看>>
boost 同步定时器
查看>>
[ROS] Chinese MOOC || Chapter-4.4 Action
查看>>
简单的数据库操作
查看>>
iOS-解决iOS8及以上设置applicationIconBadgeNumber报错的问题
查看>>
亡灵序曲-The Dawn
查看>>
Redmine
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>