截止申请

关闭 C # 应用程序的最佳实践是什么?

我读到你可以用:

Environment.Exit(0); or Application.Exit();

但有什么区别呢?

此外,关于环境。退出(0) ,我以前在使用 Java 时使用过退出代码,但从未完全理解它们的用途。在 C # 中退出应用程序时它们扮演什么角色?

154206 次浏览

Application.Exit 用于 Windows 窗体应用程序——它通知所有消息泵它们应该终止,等待它们完成处理事件,然后终止应用程序。注意,它不一定强制应用程序退出。

Environment.Exit 适用于所有 Windows 应用程序,但主要用于控制台应用程序。它使用给定的退出代码立即终止进程。

一般来说,应该在 Windows 窗体应用程序中使用 Application.Exit,在控制台应用程序中使用 Environment.Exit(尽管我更喜欢让 Main方法/入口点运行到完成,而不是在控制台应用程序中调用 Environment.Exit)。

有关详细信息,请参阅 MSDN 文档。

在 C # 中退出应用程序时它们扮演什么角色?

和其他申请一样。基本上他们会被还给打电话的人。不相关,如果你的开始是一个图标双击。相关的是调用是一个批处理文件,它决定应用程序是否在返回代码上工作。所以,除非你写了一个需要这个的程序,否则返回的 dcode 是不相关的。

但有什么区别呢?

一个来自环境,一个来自 System.Windows.Forms? 应用程序。所有的功能应该没有很大的区别。

System.Windows.Forms.Application.Exit() -通知所有消息泵它们必须终止,然后在消息处理后关闭所有应用程序窗口。此方法停止所有线程上正在运行的所有消息循环,并关闭应用程序的所有窗口。此方法不强制应用程序退出。通常从消息循环中调用 Exit()方法,并强制 Run()返回。若要仅退出当前线程的消息循环,请调用 ExitThread()。这是运行 Windows 窗体应用程序时要使用的调用。作为一般指导原则,如果调用了 System.Windows.Forms.Application.Run(),请使用此调用。

System.Environment.Exit(exitCode) -终止此进程并向底层操作系统提供指定的退出代码。此调用需要具有 SecurityPermissionFlag.UnmanagedCode权限。如果不这样做,就会发生 SecurityException错误。这是运行控制台应用时使用的调用。

我希望最好使用 Application.Exit

请参阅以下链接:

对我来说,这是最好的解决办法

 Thread.CurrentThread.Abort();

并强制关闭应用程序。

试试这个

System.Windows.Application.Current.Shutdown();

它也可以使用 NotifyIcon,请将此代码放在 App.xaml.cs 中 '

protected override void OnExit(ExitEventArgs e)
{
base.OnExit(e);
App.nIcon.Visible = false;
}