【发布时间】:2012-11-10 09:15:07
【问题描述】:
我正在玩一些 C# Winforms/WPF 代码,但偶然发现了一些奇怪的东西。 假设我有这样的代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DoSomething();
// maybe something more if everything went ok
}
}
令我困惑的是,在构造函数完成其工作之前,我不能简单地从方法 DoSomething 关闭应用程序。如果在执行DoSomething 期间发生任何事情失败,我需要立即关闭应用程序,但它只是继续运行,执行部分// maybe something more... 然后关闭,但这对我来说太晚了。
我必须将用于关闭表单的代码放入构造函数本身,并使用下面的return;,然后它才能工作,但我并没有真正找到一个可以接受的解决方案。我正在尝试将此类验证逻辑从构造函数移到我的方法中。
我尝试过类似的东西
public void DoSomething()
{
Close();
}
或
public void DoSomething()
{
Application.Current.Shutdown();
}
但它似乎不起作用。是的,这两个代码都会关闭应用程序,但只有在完全完成的构造函数代码之后。
Why 我需要这样的东西吗?好吧,因为在启动时我需要检查各种东西,比如连接和硬件的可用性,验证用户等,如果有任何失败,执行更多代码也没有意义。
用 Winforms 和 WPF 尝试了相同的原理(因此有标签),效果相同。
谁能提供解释或解决方案?
【问题讨论】:
-
创建第一个表单时,没有应用程序正在运行,因此可能会忽略 Shutdown()。 Avip 提供了很好的解决方案。