Thread开始后是无法更新主界面的控件的,比如下面这样会报错的。刚开始是要timer来更新界面的,结果发现运行了一个晚上,第二天看界面有比较明显的卡顿现象,而且,界面上的时间显示也是每两秒显示一次。所以用Thread来替代timer,效果还是比较明显。再运行一个晚上试试。我的项目是要出来设备的数据,100毫秒产生一次数据用LiveChart来显示。
ThreadStart TS;
Thread thread;
TS = new ThreadStart(MyThread);
private void Window_Loaded(object sender, RoutedEventArgs e)
{
thread = new Thread(TS);
}
private void btn_start_Click(object sender, RoutedEventArgs e)
{
thread.IsBackground = true;
isThreadStart = true;
thread.Start();
}
private void MyThread()
{
while (isThreadStart)
{
Thread.Sleep(100);
btn.Content = "停止";
}
}
必须写成这样才行,另外,需要让线程停止的时候使用isThreadStart = false 就可以了。
ThreadStart TS;
Thread thread;
Dispatcher dip = null;
TS = new ThreadStart(MyThread);
public MainWin