关于程序运行了System.exit但是后台却没有结束该进程

1 问题陈述

在开发中,遇到这样一个问题:

点击程序主窗体右上角的叉号关闭应用程序后,程序的进程却没有关闭。

通过查阅资料,了解到,产生此类问题的原因主要有以下两点:

1)程序中存在死循环。

2)程序为多线程程序,且在窗体关闭后,仍有线程在工作。

解决方法:
@方法1

将循环条件while (true)修改为while (this.Visible)

这样一来,当窗体关闭后,窗体的Visible属性值变为false,则while循环随即被终止,进而进程也会被正常结束。

@方法2

在窗体的FormClosing事件处理方法中,使用代码System.Environment.Exit(0)强制退出当前进程,这样一来,不管进程下是否还有线程在工作,都会一概结束。

private void frmCase2_FormClosing(object sender, FormClosingEventArgs e)
{
System.Environment.Exit(0);
}
方法1的原理是结束程序中的死循环进而结束线程,从而使进程能够正常结束;而方法2是不管线程有没有工作都强制关闭所有线程进而正常结束进程。
我们这里不去探讨哪种方法更好,只想对解决此类问题的思考方向给出一个说明,那就是:通过结束所有线程的工作来保证进程的正常结束。当然这也是本文的一个主题。

由于我的这个程序是java语言写的,没有找到杀死进程的方法,所以还是把死循环中的true改成当前窗体是否可见,当关闭窗体的时候,那么窗体不可见,即死循环也结束了!!
后面有好的建议也欢迎留言

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值