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

标签 c# wpf multithreading visual-studio-2010

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

1)载入画面

2)主窗口

我的代码如下来自Loading screen

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();
    }

当我调用我的主窗口屏幕时,我收到错误“应用程序对象正在关闭”。我相信因为线程正在关闭我收到了错误, 谁能告诉我调用主窗口的其他可能方式是什么

谢谢大家

最佳答案

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

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();
});

关于c# - WPF 线程错误(处理了无效操作异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16707029/

相关文章:

c# - 将 C# 变量设置为 SQL 中自动递增的列值的值?

c# - 为什么有些对象不能从不同的线程访问?

c# - 访问静态资源中的属性

c# - 如何使用 DataContext 绑定(bind)到 List<T>?

java - 如何修复 java.util.concurrent.CompletionException : java. lang.StackOverflowError

java - 用于将隐式数据传递给组件的设计模式(隐式意味着不通过参数)。

c# - XSockets 和 Asp.Net 4.0 网站项目

c# - 为什么我的表单看起来像 'Windows Classic'?

.net - TabControl.Items.Remove(TabItem) 不会释放 TabItem 使用的内存

Java 线程程序无法使用 wait() 和 notifyAll()