关闭软件后 进程还存在Windows任务管理器

时间:2021-05-12 19:14:40
(win7+vs2010)

我运行DEBUG文件夹里的应用,关闭后再启动该软件时提示  "Laser已停止工作"
发现 Windows任务管理器 Laser.exe还在运行,结速它后又可以正常工作了,

但在vs2010里好像不会遇到此问题

我添加了Form1_FormClosed事件 在里面添加一个与系统无关的函数,问题会不会是在这里呢?

请问这个问题如何解决呢?

4 个解决方案

#1


Form1_FormClosed代码贴出来

#2


在vs里调试的时候,其实启动的不是exe,而是用vs自身的进程,所以你在shift+F5结束调试的时候,vs会自动将资源释放
而如果你没有结束调试,仅仅是关闭窗口,调试器应该也还是处于调试状态才对
进程结束不掉,无非就是2个问题:
1.有隐藏的窗体没有关闭
2.启动了线程没有结束,(没有设置为后台线程)

#3


引用 2 楼 Z65443344 的回复:
在vs里调试的时候,其实启动的不是exe,而是用vs自身的进程,所以你在shift+F5结束调试的时候,vs会自动将资源释放
而如果你没有结束调试,仅仅是关闭窗口,调试器应该也还是处于调试状态才对
进程结束不掉,无非就是2个问题:
1.有隐藏的窗体没有关闭
2.启动了线程没有结束,(没有设置为后台线程)


我打开了updclient 在线程里接收 没有关 不知会不会是这个问题

#4


引用 3 楼 takpod 的回复:
Quote: 引用 2 楼 Z65443344 的回复:

在vs里调试的时候,其实启动的不是exe,而是用vs自身的进程,所以你在shift+F5结束调试的时候,vs会自动将资源释放
而如果你没有结束调试,仅仅是关闭窗口,调试器应该也还是处于调试状态才对
进程结束不掉,无非就是2个问题:
1.有隐藏的窗体没有关闭
2.启动了线程没有结束,(没有设置为后台线程)


我打开了updclient 在线程里接收 没有关 不知会不会是这个问题

应该就是这个问题
你可以在关闭事件里写线程.Abort();
或者Process.GetCurrentProcess().Kill();//杀死当前进程
或者启动线程的时候设置IsBackGround=true;//设置为后台线程

#1


Form1_FormClosed代码贴出来

#2


在vs里调试的时候,其实启动的不是exe,而是用vs自身的进程,所以你在shift+F5结束调试的时候,vs会自动将资源释放
而如果你没有结束调试,仅仅是关闭窗口,调试器应该也还是处于调试状态才对
进程结束不掉,无非就是2个问题:
1.有隐藏的窗体没有关闭
2.启动了线程没有结束,(没有设置为后台线程)

#3


引用 2 楼 Z65443344 的回复:
在vs里调试的时候,其实启动的不是exe,而是用vs自身的进程,所以你在shift+F5结束调试的时候,vs会自动将资源释放
而如果你没有结束调试,仅仅是关闭窗口,调试器应该也还是处于调试状态才对
进程结束不掉,无非就是2个问题:
1.有隐藏的窗体没有关闭
2.启动了线程没有结束,(没有设置为后台线程)


我打开了updclient 在线程里接收 没有关 不知会不会是这个问题

#4


引用 3 楼 takpod 的回复:
Quote: 引用 2 楼 Z65443344 的回复:

在vs里调试的时候,其实启动的不是exe,而是用vs自身的进程,所以你在shift+F5结束调试的时候,vs会自动将资源释放
而如果你没有结束调试,仅仅是关闭窗口,调试器应该也还是处于调试状态才对
进程结束不掉,无非就是2个问题:
1.有隐藏的窗体没有关闭
2.启动了线程没有结束,(没有设置为后台线程)


我打开了updclient 在线程里接收 没有关 不知会不会是这个问题

应该就是这个问题
你可以在关闭事件里写线程.Abort();
或者Process.GetCurrentProcess().Kill();//杀死当前进程
或者启动线程的时候设置IsBackGround=true;//设置为后台线程