微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

停止执行C#代码

我正在玩一些C# Winforms / WPF代码,偶然发现了一些奇怪的东西.
假设我有这样的代码
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DoSomething();

        // maybe something more if everything went ok
    }
}

令我困惑的是,我不能简单地在构造函数完成其工作之前从方法DoSomething关闭应用程序.如果在执行DoSomething期间发生任何事情失败,我需要立即关闭应用程序,但它只是继续运行,执行部分//可能更多……然后关闭,但这对我来说太迟了.

我必须在构造函数本身中放入用于关闭表单的代码,并返回以下内容;然后它工作,但我真的没有找到一个可接受的解决方案.我试图将这样的验证逻辑从构造函数移动到我的方法.

我尝试过类似的东西

public void DoSomething()
{
    Close();
}

要么

public void DoSomething()
{
    Application.Current.Shutdown();
}

但它似乎没有用.是的,两个代码都会关闭应用程序,但仅在完成构造函数代码之后.

我为什么需要这样的东西?好吧,因为在启动时我需要检查各种事情,比如连接和硬件的可用性,验证用户等,如果有任何失败,就没有必要执行更多的代码.

使用Winforms和WPF(因此标签)尝试相同的原理,工作原理相同.

任何人都可以提供解释或解决方案吗?

解决方法

只是尝试在你的情况下使用Environment.Exit(-1),一切都会很好.

补充:这是我能为您提供的最佳参考.

Application.Exit vs Application.Shutdown vs Environment.Exit间的差异

Application.Exit()用于以优雅的方式退出Windows窗体应用程序.基本上,它会停止消息泵,关闭所有窗口,并在调用Application.Run()之后立即返回Main()方法.但是,有时它似乎不起作用 – 这通常是因为还有其他前台线程(除了UI线程)仍在运行,这阻止了线程结束.

Application.Shutdown()(广泛地)等同于WPF应用程序中的Application.Exit().但是,您可以设置ShutDownMode,以便在主窗口关闭,最后一个窗口关闭或仅在调用方法关闭应用程序.

Environment.Exit()会杀死所有正在运行的线程,并且进程本身就会死掉.当更优雅的方法由于某种原因不起作用时,这应仅在WF或WPF中作为最后的手段使用.它还可用于从控制台应用程序突然退出.

另一参考文献:How to properly exit a C# application?

原文地址:https://www.jb51.cc/csharp/92584.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐