zoukankan      html  css  js  c++  java
  • WPF Dispatcher的使用

    

    <Window x:Class="DispatcherExam.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">
        <Grid>
            <StackPanel>
                <Label x:Name="lblHello">欢迎你光临WPF的世界!</Label>
                <Button Name="btnThd" Click="btnThd_Click">多线程同步调用</Button>
                <Button Name="btnAppBeginInvoke" Click="btnAppBeginInvoke_Click" >BeginInvoke 异步调用</Button>
            </StackPanel>
        </Grid>
    </Window>


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Windows.Threading;

    namespace DispatcherExam
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                this.Dispatcher.Thread.Name = "MainThread";
            }

            private void btnThd_Click(object sender, RoutedEventArgs e)
            {
                Thread th = new Thread(ModifyUI);
                th.Name = "SubThread";
                th.Start();
            }
            private void ModifyUI()
            {

                // 模拟一些工作正在进行

                Thread.Sleep(TimeSpan.FromSeconds(2));

                //lblHello.Content = "欢迎你光临WPF的世界,Dispatcher";
                MessageBox.Show(this.Dispatcher.Thread.Name); //MainThread
                this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate()
                {
                    lblHello.Content = "欢迎你光临WPF的世界,Dispatche  同步方法 !!";

                });


            }

            private void btnAppBeginInvoke_Click(object sender, RoutedEventArgs e)
            {
                new Thread(() =>
                {

                    Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Normal,

                        new Action(() =>
                        {

                            Thread.Sleep(TimeSpan.FromSeconds(2));

                            this.lblHello.Content = "欢迎你光临WPF的世界,Dispatche 异步方法!!" + DateTime.Now.ToString();

                        }));

                }).Start();


            }

        }
    }

  • 相关阅读:
    hdu4930 Fighting the Landlords(模拟 多校6)
    hdu4888 多校B 最大流以及最大流唯一推断+输出方案
    xUtils介绍 -- DbUtils、ViewUtils、HttpUtils、BitmapUtils
    java 读取properties文件
    poj1062昂贵的聘礼
    杭电 HDU 2717 Catch That Cow
    iOS使用自己定义字体
    Elasticsearch 2014年10月简报
    html 上下左右都居中
    Linux 比较判断运算(if else)
  • 原文地址:https://www.cnblogs.com/dxmfans/p/9434793.html
Copyright © 2011-2022 走看看