C# Form窗体为什么窗体在关闭后VS2013还是显示正在运行,无法彻底关闭程序,要怎么改

LCOracle 2015-05-19 03:27:28
我在FromClosing 里这样编程了,但为什么窗体在关闭后VS2013还是显示正在运行,无法彻底关闭程序,要怎么改
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show(this, "你真的要退出吗?", "提示信息:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
...全文
653 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2015-05-20
  • 打赏
  • 举报
回复
引用 10 楼 LCOracle 的回复:
[quote=引用 7 楼 Z65443344 的回复:] 一般主窗体关闭后程序不退出(有死进程) 就是2个原因造成的 1.开了线程,while死循环,没有退出 2.有隐藏的窗体没close掉
隐藏窗口怎么关闭?[/quote] Application.Exit();就会把所有打开的窗口都关闭掉了,不需要你自己遍历窗体一个一个的去关闭. 但是它不能解决有线程不退出的问题 解决线程问题,有几种办法 1.保留线程句柄,关闭之前执行线程.Abort() 2.线程里不要使用while(true)死循环,而改用while(run),主窗体关闭时把run改为false 3.设置为后台线程,则窗体关闭,线程也跟着关闭 4.杀死进程
LCOracle 2015-05-19
  • 打赏
  • 举报
回复
引用 7 楼 Z65443344 的回复:
一般主窗体关闭后程序不退出(有死进程) 就是2个原因造成的 1.开了线程,while死循环,没有退出 2.有隐藏的窗体没close掉
隐藏窗口怎么关闭?
LCOracle 2015-05-19
  • 打赏
  • 举报
回复
引用 6 楼 bbjiabcd 的回复:

             if (MessageBox.Show(this, "你真的要退出吗?", "提示信息:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
             {
                 e.Cancel = false;
                 Application.Exit();
             }
             else
             {
                 e.Cancel = true;
             }
这样退出窗口会提示遍啊
姓小名白丶 2015-05-19
  • 打赏
  • 举报
回复
引用 3 楼 zyl_leilei 的回复:
e.Cancel = false; ---这个Cancel 是指 是否应取消事件的执行。 要关闭程序则要使用 Application.Exit(); //退出整个应用程序 或者 SomeFormName.Close();//关闭某个窗体。
要么退程序exit() 要么直接关闭close() cancel是要闹哪样
於黾 2015-05-19
  • 打赏
  • 举报
回复
一般主窗体关闭后程序不退出(有死进程) 就是2个原因造成的 1.开了线程,while死循环,没有退出 2.有隐藏的窗体没close掉
bbjiabcd 2015-05-19
  • 打赏
  • 举报
回复

             if (MessageBox.Show(this, "你真的要退出吗?", "提示信息:", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
             {
                 e.Cancel = false;
                 Application.Exit();
             }
             else
             {
                 e.Cancel = true;
             }
yuyishui 2015-05-19
  • 打赏
  • 举报
回复
引用 3 楼 zyl_leilei 的回复:
e.Cancel = false; ---这个Cancel 是指 是否应取消事件的执行。 要关闭程序则要使用 Application.Exit(); //退出整个应用程序 或者 SomeFormName.Close();//关闭某个窗体。
这个应该是可以的
於黾 2015-05-19
  • 打赏
  • 举报
回复
e.Cancel = false; 这是多此一举 它默认就是false 如果设置为true,则会取消关闭 你只要判断不是yes就赋值成true就行了,不用管别的
-小蕾- 2015-05-19
  • 打赏
  • 举报
回复
e.Cancel = false; ---这个Cancel 是指 是否应取消事件的执行。 要关闭程序则要使用 Application.Exit(); //退出整个应用程序 或者 SomeFormName.Close();//关闭某个窗体。
於黾 2015-05-19
  • 打赏
  • 举报
回复
或者有个简单暴力的办法 Process.GetCurrentProcess.Kill();//杀死当前进程
於黾 2015-05-19
  • 打赏
  • 举报
回复
你是否开了线程? 关闭窗体时,把线程停了 最简单的办法是,创建线程的时候,设置background=true

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧