本意,是想用变量来控制按钮的IsEnable,但是发现要么没法实时控制,要么报错:调用线程无法访问此对象,因为另一个线程拥有该对象
后来问了领导,领导说要用dispatcher,查了下英语单词是n,调度员;[计] 调度程序;[计] 分配器
意思,话不多说直接上代码:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Thread thread = new Thread(SampletubeButtonStateSet);//20221114新开后台线程
thread.IsBackground = true;
thread.Priority = ThreadPriority.Lowest;
thread.Start();
}
public void SampletubeButtonStateSet()
{
while (true) //将要实时刷新的代码放在while去实时扫描
{
App.Current.Dispatcher.BeginInvoke((System.Action)(() => //用这个方法给它实时刷新
{
if (GlobalPara.Isrunning == true)
{
this.试管切换.IsEnabled = false;
}
else
{
this.试管切换.IsEnabled = true;
}
}));
Thread.Sleep(10);
}
}
本文介绍了一种在WPF应用程序中使用后台线程结合Dispatcher实现按钮状态实时更新的方法,解决了因主线程阻塞导致的界面响应问题。
5024

被折叠的 条评论
为什么被折叠?



