C#中程序的退出
发布日期:2021-11-07 06:40:17
浏览次数:2
分类:技术文章
本文共 1080 字,大约阅读时间需要 3 分钟。
程序的关闭是很讲究的,处理的不好的话,将软件连续开启和关闭,当数次后在启动软件后程序会崩溃。或者程序退出很慢。细节决定成败,一款好的软件应该从各方面都要做严格地反复地推敲,力争做到无可挑剔。
有的程序员喜欢在关闭的时候让程序做一些事情,比如保存一些记录什么的,我觉得这样大可不必,因为这些会影响退出的时间,单一职责原则一再强调职责要单一,关闭程序就是关闭程序,不要掺杂其它动作。 当然仅仅一个关闭也有很多种方式的,比如窗体Close(),Application.Exit(),Application.ExitThread(),Enviroment.Exit(0),以及Process.GetCurrentProcess().Kill()。这些相信大家在退出时都用到过。这些方法都可以退出程序。在我做的最初的一个项目中,由于刚开始没有全面的设计,很多功能都是大家有了新的想法而加上的,因此里面大量用到了线程,有名字的,没名字的,有的可以管理,有的根本没法获取它并管理它。在退出子窗口的时候,一般使用当前Form.Close(),然后将该窗口内的线程获取到,再一一Abort(),但是在退出主程序的时候,this.Close(),就很慢了,因为很多线程还在运行。所以当时就使用杀死进程的方法。 以上那些退出的方法我都使用过。Close(),关闭主窗体,但是这个关闭,程序会调用Dispose方法,也就是窗体中Designer中的,这样释放当前窗体的资源,但是不能强制结束循环,如果程序中有线程在运行,那么关闭需要很久。Application.Exit(),这个当有线程时,也要等很久。Application.ExitThread(),退出当前线程上的消息循环,并关闭该线程的窗口。Enviroment.Exit(0),该方法强制退出。Process.GetCurrentProcess().Kill(),当你觉得其它方法退出不太及时或者失灵,那么这个方法就是终极法宝,直接干掉进程,当然也退出了。
当然了,程序退出时,程序自己要处理很多资源,最安全的方式就是,主窗体Close方法,然后剩下的交给程序做,虽然退出慢,但是这是程序自身的机制去完成的退出绝对安全。可是用户会允许你这么做吗,如果你的软件点击关闭了结果在进程中还生存了很久,或者半天还是放不了资源,那么用户很可能不再使用你的程序。所以本着一切为用户着想的原则,退出还是速度快为好。我常用的方式是。
窗体.Close();Process.GetCurrentProcess().Kill();
同时使用。
转载地址:https://blog.csdn.net/yysyangyangyangshan/article/details/7383276 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月19日 09时01分24秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
python基础:list,map,open()文件读写
2019-04-29
Go面向对象-接口
2019-04-29
Go-多路选择和超时控制
2019-04-29
Go-channel的关闭和广播
2019-04-29
Go-任务的取消
2019-04-29
AIX 作为Web Server 使用时,tcp相关的几个参数调整
2019-04-29
自我学习37:请描述一下网页从开始请求到最后展示的完整过程
2019-04-29
自我学习38:如何区分前后端BUG
2019-04-29
自我学习39:接口自动化测试用例&功能测试用例区别
2019-04-29
mirror去兔子补丁下载 附安装教程
2019-04-29
mirror去兔子补丁 v3.0附安装教程
2019-04-29
mirror去兔子补丁为什么还有兔子_mirror去兔子补丁使用教程
2019-04-29
3dmax2012安装教程
2019-04-29
OC渲染器(Octane Render)整合版安装包 附安装教程
2019-04-29
操作系统期末大题复习
2019-04-29
hive:分区表,hbase外表
2019-04-29
想要成为运维,想要成为后期的架构师?这些知识是必备的!
2019-04-29
linux 是如何 快速一键安装禅道的呐?
2019-04-29
运维面试基础试题(四)
2019-04-29
一键安装Openstack单节点 必能成功
2019-04-29