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();

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

  • 相关阅读:
    不知道是不是爬虫
    springCloud 搭建Eureka
    HttpsUtils
    java验证
    复选框值存数据库 存取问题
    Oracle VM VirtualBox 无法链接本地
    ssh 无法查询数据库
    CSS 分割线
    vue+Element 表格编辑
    数组,对象的深拷贝 与 浅拷贝
  • 原文地址:https://www.cnblogs.com/cnwy/p/12093418.html
Copyright © 2011-2022 走看看