2010-10-19 121 views
0

我有一个登录对话框显示在一个WPF应用程序上,它有一个取消按钮,而不是试图登录到应用程序,关闭它。问题是,我有一个用户控件出现在mainwindow窗体上,所以如果我尝试运行Application.Current.Shutdown()或this.Close()方法,我会从事件处理程序中的一个异常中分配一个事件到用户控件上的特定控件。异常是NullReferenceException,即对象引用未设置为对象的实例。我有限的WPF理解,似乎,当我试图关闭应用程序时,有另一个线程(UI线程?)尝试在MainWindow上初始化组件。我不确定这是否正确,但我希望这里的某个人能够清楚说明为什么要这样做以及采取任何方式来阻止它,以便我可以正常关闭应用程序。关闭WPF MainWindow

更多信息,此登录对话框和后续的Application.Current.Shutdown()方法全部发生在MainWindow构造函数内,不知道是否有帮助。

感谢您的帮助。

+1

你能后的代码,并告诉它引发异常的行。 – Vitalij 2010-10-19 14:08:04

回答

0

我怀疑在处理主窗口之前不要删除事件处理程序,这可能会导致此异常。

+0

public event RoutedEventHandler NewModelClick { add {TopMenu.NewModelClick + = value; } 删除{TopMenu.NewModelClick - = value; } } – 2010-10-19 14:13:15

+0

它添加{TopMenu.NewModelClick + = value; }行,TopMenu为NULL – 2010-10-19 14:14:11

+0

@Walter:请使用此信息编辑您的原始问题。像这样的东西往往会在评论部分迷失,特别是在原始问题方面。为此,请在您的帖子下方选择“修改”,然后将信息粘贴到那里。确保在粘贴代码时突出显示代码,然后选择“代码”按钮(带1和0的代码),以便代码显示为格式化代码。 – 2010-10-19 15:02:53

0

好没关系,我得到了答案,我把InitialiseComponent()方法周围的if语句和布尔设置为false,如果用户点击退出,快乐的日子:)

+0

如果在组件初始化期间显示对话框,则可以在对话框关闭后调用return函数,以防止应用程序初始化窗口的其余部分。 – Vitalij 2010-10-20 07:31:53