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

 

 

 

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

posted @ 2019-12-24 20:29  王钰  阅读(400)  评论(0编辑  收藏  举报