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

  • 相关阅读:
    关于postman返回参数
    字典(dict)
    序列(tuple)
    列表(List)
    字符串截取
    条件及循环语句
    函数
    变量和类型
    post请求
    django学习-5.获取url参数和name的作用
  • 原文地址:https://www.cnblogs.com/Areas/p/2193361.html
Copyright © 2020-2023  润新知