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