请教一下:如何释放进程???

galaxy_1981 2015-06-02 03:03:50
VS 2010 开发WinForm(c#)

我写了一个小软件(WinSteel),打开软件后,会出现3个进程,如下图(WinSteel.exe):


当我关闭软件后,进程中的WinSteel.exe还在,不会消失!

请问:是不是需要些代码来释放这些进程??代码怎么写??

...全文
426 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
galaxy_1981 2015-06-08
  • 打赏
  • 举报
回复
引用 26 楼 Z65443344 的回复:
至于Application.Exit()要写在哪里,一般都是写在主窗体里(是你认为的主窗体,但是对于编译器来说,你最开始的登陆窗体其实才是主窗体).当然如果你想在其他窗体里直接退出整个程序,也可以把这个代码写进别的窗体里去. 总之它一执行,就会关闭所有的窗体.
了解了,谢谢
tinghai_xu 2015-06-08
  • 打赏
  • 举报
回复
写到你关闭程序的事件里,这个情况应该是你开了线程,线程没有结束导致
於黾 2015-06-05
  • 打赏
  • 举报
回复
至于Application.Exit()要写在哪里,一般都是写在主窗体里(是你认为的主窗体,但是对于编译器来说,你最开始的登陆窗体其实才是主窗体).当然如果你想在其他窗体里直接退出整个程序,也可以把这个代码写进别的窗体里去. 总之它一执行,就会关闭所有的窗体.
於黾 2015-06-05
  • 打赏
  • 举报
回复
引用 24 楼 galaxy_1981 的回复:
[quote=引用 22 楼 andywangguanxi 的回复:] 楼主你还是得检查检查自己的程序。正常情况,WinForm程序点击关闭按钮后,进程不会继续驻留那么久。
登录窗口,如果登录成功,那我用的代码是 this.Hide() ,会不会是这个原因?? 如果用this.Close() ,那么主窗口不会显示出来,程序直接就关闭了,所以我用了this.Hide()[/quote] 是的. 我前面已经说过了,只有2种可能 1.有窗口没关闭(被你hide了) 2.有线程没退出 既然你没用线程,那就是窗口的问题了 窗口的问题,加上Application.Exit()就会自动帮你关掉所有的窗体
galaxy_1981 2015-06-05
  • 打赏
  • 举报
回复
引用 22 楼 andywangguanxi 的回复:
楼主你还是得检查检查自己的程序。正常情况,WinForm程序点击关闭按钮后,进程不会继续驻留那么久。
登录窗口,如果登录成功,那我用的代码是 this.Hide() ,会不会是这个原因?? 如果用this.Close() ,那么主窗口不会显示出来,程序直接就关闭了,所以我用了this.Hide()
  • 打赏
  • 举报
回复
Process.GetCurrentProcess().Kill() 不行?
我叫小菜菜 2015-06-04
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
一般这种问题就是2个原因造成的 1.有隐藏的窗体没关闭 2.有运行的线程没退出 问题1的解决办法,主窗体Close的时候,执行Application.Exit() 问题2的解决办法,线程设置为BackGround=true后台线程 终极解决办法 Process.GetCurrentProcess.Kill();//杀死当前线程
Application.Exit()会释放当前进程的所有前台线程和占用的资源。 线程的属性IsBackGround=true用于设置是否是后台线程。 MDI子窗体,应该设置parent属性,指明是附属于哪个父窗体。 (后台线程的意思是:程序退出后继续运行,这就是后台运行的意思。 相对的前台线程,即窗体或交互界面释放前会结束前台线程。 还有一个守护线程,守护线程可以理解为就是一直在后台运行的线程,默默守护人在塔在。。)
xian_wwq 2015-06-03
  • 打赏
  • 举报
回复
引用 12 楼 galaxy_1981 的回复:
[quote=引用 4 楼 Z65443344 的回复:] 一般这种问题就是2个原因造成的 1.有隐藏的窗体没关闭 2.有运行的线程没退出 问题1的解决办法,主窗体Close的时候,执行Application.Exit() 问题2的解决办法,线程设置为BackGround=true后台线程 终极解决办法 Process.GetCurrentProcess.Kill();//杀死当前线程
线程设置为BackGround=true,这个在哪里设置??没找到啊[/quote] 启动thread之前设置

yourthread .IsBackGround = true;
EdsionWang 2015-06-03
  • 打赏
  • 举报
回复
楼主你还是得检查检查自己的程序。正常情况,WinForm程序点击关闭按钮后,进程不会继续驻留那么久。
galaxy_1981 2015-06-03
  • 打赏
  • 举报
回复
引用 11 楼 diaodiaop 的回复:
代码写的有问题 而不是说exe需要"释放"... 因为你的程序中使用了多线程..并且就算在程序退出的时候 也没有完全关闭或者销毁. 所以才会出现这样的问题... 解决问题的根本原因就是不要用线程..因为不好管理..用用线程池啦或者异步啦之类的东西... 当然你也可以在main.cs的close里面写application.exit()
“线程”,我都不知道这在VS环境中怎么用的(很菜,不好意思),主窗体设置成MDI容器后,里面show的windows窗体就是线程??? 我主窗口的FormClosed事件里,用application.exit()好像可以了,退出系统后,WinSteel.exe进程也会自己退出!
galaxy_1981 2015-06-03
  • 打赏
  • 举报
回复
引用 4 楼 Z65443344 的回复:
一般这种问题就是2个原因造成的 1.有隐藏的窗体没关闭 2.有运行的线程没退出 问题1的解决办法,主窗体Close的时候,执行Application.Exit() 问题2的解决办法,线程设置为BackGround=true后台线程 终极解决办法 Process.GetCurrentProcess.Kill();//杀死当前线程
线程设置为BackGround=true,这个在哪里设置??没找到啊
by_封爱 版主 2015-06-03
  • 打赏
  • 举报
回复
代码写的有问题 而不是说exe需要"释放"... 因为你的程序中使用了多线程..并且就算在程序退出的时候 也没有完全关闭或者销毁. 所以才会出现这样的问题... 解决问题的根本原因就是不要用线程..因为不好管理..用用线程池啦或者异步啦之类的东西... 当然你也可以在main.cs的close里面写application.exit()
galaxy_1981 2015-06-03
  • 打赏
  • 举报
回复
引用 3 楼 xian_wwq 的回复:
正常情况. Application.Exit()后进程肯定就退出了 如果没有,就要查是不是 有工作线程未结束,有循环未正常退出等等
这个代码写在哪里?? 主窗口的FormClosed事件里?还是每个窗口退出的时候都要写??
galaxy_1981 2015-06-03
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
Process.GetCurrentProcess.Kill();//杀死当前进程 如果你用这个办法,那么前面两个解决办法都可以忽略了 不管什么状况,杀死进程它总不会再有了
这个代码是写在主窗口的FormClosed事件里面???
程序猿老曾 2015-06-03
  • 打赏
  • 举报
回复
实在不行,找到这个进程名,直接把它Kill掉
galaxy_1981 2015-06-03
  • 打赏
  • 举报
回复
引用 7 楼 ccm1818168 的回复:
释放什么啊 你的WinSteel.exe都不能正常退出
就是不知道问题出在哪里啊!!
把分全给哥 2015-06-03
  • 打赏
  • 举报
回复
按住电源键五至十秒
john_QQ:2335298917 2015-06-03
  • 打赏
  • 举报
回复
如果没有前台线程的话,就按你修改的方法,用application.exit()
galaxy_1981 2015-06-03
  • 打赏
  • 举报
回复
引用 16 楼 wish907 的回复:
Thread查找整个解决方案,肯定创建了线程但是一直没有退出。 找到创建的线程然后和楼上说的一样
主窗口的FormClosed事件里,我用application.exit()好像是可以了,退出系统后,WinSteel.exe进程也会自己退出! 是这样吧????
galaxy_1981 2015-06-03
  • 打赏
  • 举报
回复
引用 16 楼 wish907 的回复:
Thread查找整个解决方案,肯定创建了线程但是一直没有退出。
找到创建的线程然后和楼上说的一样


找了一下,几找到1个



加载更多回复(9)

110,552

社区成员

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

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

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