WPF线程错误(处理了无效的操作异常)

时间:2013-05-23 06:30:46

标签: c# wpf multithreading visual-studio-2010

我正在创建WPF项目,我有两个屏幕

1)载入画面

2)主窗口

我的代码如下所示,来自加载屏幕

private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        loadingThread = new Thread(load);
        loadingThread.SetApartmentState(ApartmentState.STA);
        loadingThread.Start();

    }

   private void load()
    {
        Thread.Sleep(1000);
        this.Dispatcher.Invoke(showDelegate, "Loading UI...");
        Thread.Sleep(2000);
        //do some loading work
        this.Dispatcher.Invoke(hideDelegate);

        Thread.Sleep(2000);
        this.Dispatcher.Invoke(DispatcherPriority.Normal,
        (Action)delegate() { this.CLose(); });

        MainWindow Mw = new MainWindow();//Gives me the error
        Mw.ShowDialog();
    }

当我调用Mainwindow屏幕时,我收到错误“应用程序对象正在关闭”。我感到很自信,因为线程正在关闭我收到错误, 任何人都可以告诉我什么是其他可能的方式来调用我的主窗口

谢谢大家

1 个答案:

答案 0 :(得分:1)

您正在关闭调用应用程序的shutdown命令的最后一个窗口。 在关闭“此”窗口之前创建并打开新窗口: 你可以改变这个:

this.Dispatcher.Invoke(DispatcherPriority.Normal,
    (Action)delegate() { this.Close(); });

到此:

this.Dispatcher.Invoke(DispatcherPriority.Normal,
(Action)delegate() 
{
    MainWindow Mw = new MainWindow();
    // Mw.ShowDialog(); I changed this line because it cannot be a dialog here.
    Mw.Show();
    this.Close();
});