从两个线程调用WPF
本文关键字:线程 调用 WPF 两个 | 更新日期: 2023-09-27 18:06:45
我尝试调用两次,然后再从另一个对象调用一次。
public void Show()
{
if (mainGrid == null)
return;
if (!Dispatcher.CheckAccess())
{
Dispatcher.BeginInvoke(new ThreadStart(delegate() { Show(); }), DispatcherPriority.Background);
return;
}
mainGrid.Children.Add(rec);
rec.HorizontalAlignment = System.Windows.HorizontalAlignment.Stretch;
rec.VerticalAlignment = System.Windows.VerticalAlignment.Stretch;
mainGrid.Children.Add(this);
this.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
this.VerticalAlignment = System.Windows.VerticalAlignment.Center;
}
两个对象B, C从A继承了这个函数:当我从进程B.show()中调用B.showStop()时,从线程和C.show()中调用B.showStop(),我在使用C.show()中的特权main.children.Add(…)时得到异常请帮我解决这个问题。
我认为你应该提供更多关于你的问题的信息,例如:
- 哪种类是A(它似乎是一个UI对象)
- 什么是rec
但目前我认为问题可能是你实例化那些视觉对象不在UI线程:如果你创建一个按钮在一个工作线程它会有线程调度器,这是不同于UI线程调度器。
我不能确切地告诉你发生了什么,但我认为你正在添加两个控件,这两个控件是在不同的线程上创建的,所以两个Add
中的一个会给你一个异常。