zoukankan      html  css  js  c++  java
  • WPF多线程

    需求:WPF在主线程操作数据库等一些联网操作时,会影响界面造成卡顿,GUI卡顿;

    解决方案:引入多线程解决来解决GUI卡顿问题。

     

    新建线程

    方法一(在新建线程中调用已有函数)

    Thread thread = new Thread(ConnMySql);//ConnMySql是子函数,在此线程调用子函数
    thread.Start();

     方法二(在新建线程中执行相关代码)

    new Thread(() =>
    {
            sqlHelper.connMysql();
    }).Start();

    方法三(在新建线程中调用已有函数,且更新界面(GUI))

    private void Button_Click(object sender, RoutedEventArgs e)
    {
      Thread thread = new Thread(ConnMySQL);
      thread.Start();
    }
    private void ConnMySQL()
    {
      sql = sqlHelper.connMysql();
      MessageBox.Show(sql);
      Thread.Sleep(100);
      //利用Dispatcher更新主界面控件属性
      this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate {
        label.Content = sql;
      });
    }

     

    new Thread(() => {
                    this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate {
                        form1HidenForm2Visible();
                    });
                }).Start();

    目前我的理解时线程指定的函数只会执行一次,执行完毕后就不再执行,至于线程有没有销毁目前不得而知。

  • 相关阅读:
    线程安全的单例模式
    rsync 不真正同步,只显示更新的内容
    Python_元组、字典内建方法详解
    Python_元组、字典内建方法详解
    数组求差集
    svn数据库自动发布程序
    perl 比较目录
    被驱动表 拼接列无法走索引
    FILTER NESTLOOP 中驱动表问题
    Linux_SystemLogManager
  • 原文地址:https://www.cnblogs.com/cnwy/p/12093418.html
Copyright © 2011-2022 走看看