需求: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();
目前我的理解时线程指定的函数只会执行一次,执行完毕后就不再执行,至于线程有没有销毁目前不得而知。