由于我的某些页面窗口将在显示之前加载大量计算,因此我创建了WPF窗口并使其成为带有GIF的加载屏幕,以在呈现页面之前显示。
当我想显示加载屏幕时,我使用以下代码:
Loading.ShowSplashScreen();
页面加载后,我将使用下面的代码关闭加载屏幕
Loading.CloseForm();
加载页面后面的代码如下:
public partial class Loading : Window
{
private static Loading LD;
public static Dictionary<string, object> Dic = new Dictionary<string, object>();
public Loading()
{
InitializeComponent();
}
static public void ShowSplashScreen()
{
Thread t = new Thread(() =>
{
Loading sw = new Loading();
Dic["Loading"] = sw;
sw.ShowDialog();
});
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
static public void CloseForm()
{
if (Loading.Dic.ContainsKey("Loading"))
{
Loading sw = Loading.Dic["Loading"] as Loading;
sw.Dispatcher.Invoke((Action)(() => sw.Close()));
}
}
}
当我“第一次”调出加载屏幕时没问题,但是一旦我“第二次”调出加载屏幕时出现以下错误:
由于另一个线程拥有该对象,因此调用线程无法访问该对象。
任何人都可以帮助我看看如何解决此问题吗? 非常感谢!