如何从另一个线程访问窗口?

时间:2018-08-30 13:38:38

标签: c# wpf multithreading xaml

我的项目中有2个窗口。

一个是我希望在启动时显示的“正在加载”窗口,而另一个窗口正在加载。

另一个是主窗口,它运行多个查询,因此加载需要一些时间。

当前,我有一个线程显示启动窗口,然后使用第二个线程加载主窗口。

但是,一旦主窗口最终加载完毕,我希望隐藏启动窗口,但是我不确定如何执行此操作,因为它是另一个线程的一部分。

由于将主窗口加载到同一线程中,因此将两个窗口放在同一线程中会导致启动窗口滞后很多。

有什么建议吗?

private void Application_Startup(object sender, StartupEventArgs e)
{
    Thread MainWindow_Show = new Thread(new ThreadStart(() =>
    {
        MainWindow MainWindowObj = new MainWindow();
        MainWindowObj.Show();

        System.Windows.Threading.Dispatcher.Run();
    }));
    MainWindow_Show.SetApartmentState(ApartmentState.STA);
    MainWindow_Show.IsBackground = true;

    Thread StartupWindow_Show = new Thread(new ThreadStart(() =>
    {
        Startup StartupWindow = new Startup();
        StartupWindow.Show();
        MainWindow_Show.Start();

        System.Windows.Threading.Dispatcher.Run();
    }));
    StartupWindow_Show.SetApartmentState(ApartmentState.STA);
    StartupWindow_Show.IsBackground = true;
    StartupWindow_Show.Start();
}

0 个答案:

没有答案