zoukankan      html  css  js  c++  java
  • WPF Invoke和BeginInvoke

    在WPF中Invoke和BeginInvoke和Winform中的是差不多的,只是一个用Control的一个用Dispatcher的。

    而Invoke和BeginInvoke的区别嘛 就是一个是同步的一个是异步的,也就是一个需要等待一个不需要= =

    就比如一个最简单区别的例子:

    //这个输出123
            private void button1_Click(object sender, RoutedEventArgs e) {
                textblock.Text += "1";
                this.Dispatcher.Invoke(new InvokeDelegate(Test));
                textblock.Text += "3";
            }
    
            private void Test() {
                textblock.Text += "2";
            }
    
            private delegate void InvokeDelegate();
    
    //这个输出132
            private void button1_Click(object sender, RoutedEventArgs e) {
                textblock.Text += "1";
                this.Dispatcher.BeginInvoke(new InvokeDelegate(Test));
                textblock.Text += "3";
            }
    
            private void Test() {
                textblock.Text += "2";
            }
    View Code

    Invoke是线程中比较重要的一个东西,在多线程的编程中,平常在更新界面的时候,可以用UI线程去做来减轻工作线程的负担。比如下面这样放在线程中:

    private void button1_Click(object sender, RoutedEventArgs e) {
                Thread invokeThread = new Thread(new ThreadStart(Method));
                invokeThread.Start();
                //...运算代码
            }
    
            private void Method(){
                this.Dispatcher.BeginInvoke(new InvokeDelegate(Test));
            }
    
            private void Test() {
                textblock.Text += "123";
            }
    
            private delegate void InvokeDelegate();
    View Code

    或者觉得这样写比较烦的话嘛,就可以直接这样写:

    private void button_Click(object sender, RoutedEventArgs e) {
                this.Dispatcher.BeginInvoke(new Action(() => { this.textblock.Text += "123"; }));
            }
    View Code
  • 相关阅读:
    RabbitMQ一:消息队列的认识
    RabbitMQ二:AMQP协议
    SVN中如何去除版本控制器
    Asp.net:MVC认识
    时间连接查询展示
    C#string类型总结
    JavaScript01天学习笔记分享
    UML中的类图及类图之间的关系
    23 种设计模式的分类和功能
    WCF入门
  • 原文地址:https://www.cnblogs.com/socialdk/p/3405612.html
Copyright © 2011-2022 走看看