1. 苏葳的备忘录首页
  2. 编程

在C#的form构造函数中结束程序的问题

c# exit编写一个Windows窗体程序,准备在form()中读取配置,若配置文件不存在,则退出程序。此处使用了application.exit()方法。但实测不能够正确结束,窗体还是会加载进来。考虑到窗体是program.cs中以Application.Run(new form())形式创建的,那么在窗体中可用this.Close()来结束窗体,由于之后无其它处理语句,所以Application自然也可以结束。问题在于this.Close()要放在哪里?

但在构造函数Form()中使用this.Close虽可关闭窗体,但依然会报异常,原因是此时窗体尚未完全创建。那么将读取配置的逻辑放入Form_load事件中也是不错的处理。实测将逻辑放入Form_load事件后,使用this.Close()关闭程序正常。

用Environment.Exit(0)来强制退出进程也是可行的办法,但尽量还是要避免使用,因为程序在终止前可能不能够执行一些必要的清理工作。以下是两个退出方法的区别:

Application.Exit() -> 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制应用程序退出。Exit 方法通常从一个消息循环内调用,该方法强制 Run 返回。

Environment.Exit() -> 终止进程并返回给操作系统错误码,你需要SecurityPermissionFlag.UnmanagedCode 权限否则会引发SecurityException异常。

原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/544.html

发表评论

邮箱地址不会被公开。 必填项已用*标注