我正在玩一些 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(因此有标签)尝试了相同的原理,效果相同。
任何人都可以提供解释或解决方案吗?