跪求高人指导,Winfrom程序中,为什么关闭应用程序后还有进程在运行?

tianliang1 2011-05-18 11:12:06
一个普通的C#编写的Winfrom应用程序。

关闭程序后,在任务管理器中始终还是由一个刚才运行的进程存在。迷惑不解。。。

使用了很多方法。。如:Application.Exit();System.Environment.Exit(System.Environment.ExitCode);this.Dispose();
Application.ExitThread();等都不能让应用程序在关闭,让进程结束...这是为什么?
...全文
543 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengjingjian628 2011-05-19
  • 打赏
  • 举报
回复
不懂啊
tianliang1 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qldsrx 的回复:]
进程无法结束,说明有独立的线程在工作,不要怀疑,肯定是有,至于为什么会工作而不停止,得见了代码才知道。一般我们都会用BeginInvoke方法来创建多线程,好处是,系统管理线程的结束,一旦你退出程序,那个线程一定会销毁让你及时退出,如果你自己创建一个线程,并Start()启动线程,那除非线程自己结束或者你收到终止线程,否则你占着进程不让你正常结束进程的。
[/Quote]
你说的意思。我知道。。但是。我为了测试,都还没有去创建那个线程,线程也没有Start。怎么会出现这个问题。。。
tianliang1 2011-05-18
  • 打赏
  • 举报
回复
5楼说的这种,我试过。。。isBackGround =true ,这样还是不能关闭任务列表中的进程。

为什么我的程序名称为:Bunchprogram.exe,但是在进程中看的话确实 Bunchprogram.vshost.exe

不用调试模式。就运行它的EXE文件。。发现这两个都会存在。。关闭后软件后。。Bunchprogram.exe没有了。但是Bunchprogram.vshost.exe依然存在。

代码debug调试模式,只有Bunchprogram.vshost.exe,一直无限存在。。。



isjoe 2011-05-18
  • 打赏
  • 举报
回复
遇到过这个问题,是线程导致的。
设置这个Thread.IsBackground属性,主进程关闭的时候会一同关闭子进程。

或者自己手动控制你的子进程
qldsrx 2011-05-18
  • 打赏
  • 举报
回复
进程无法结束,说明有独立的线程在工作,不要怀疑,肯定是有,至于为什么会工作而不停止,得见了代码才知道。一般我们都会用BeginInvoke方法来创建多线程,好处是,系统管理线程的结束,一旦你退出程序,那个线程一定会销毁让你及时退出,如果你自己创建一个线程,并Start()启动线程,那除非线程自己结束或者你收到终止线程,否则你占着进程不让你正常结束进程的。
mingcsharp 2011-05-18
  • 打赏
  • 举报
回复
你是不用了多线程,当你结束程序的时候要保证所有的线程要退出,
你可以这样if(thd.isAlive)thd.abort()
这样就不会再有多余的线程了
OK?
人工智能算法 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 tianliang1 的回复:]
一个普通的C#编写的Winfrom应用程序。

关闭程序后,在任务管理器中始终还是由一个刚才运行的进程存在。迷惑不解。。。

使用了很多方法。。如:Application.Exit();System.Environment.Exit(System.Environment.ExitCode);this.Dispose();
Application.ExitThread();等都不能让应用程……
[/Quote]

200%的线程问题.. 如果开启的线程操作或者保存数据不需要安全性保障的话 就设置为后台线程
程序关闭就自动跟着关闭了.
houyanjun 2011-05-18
  • 打赏
  • 举报
回复
你不用vs调试,直接运行你debug文件中的exe文件,看看这个exe进程会不会去掉?
tianliang1 2011-05-18
  • 打赏
  • 举报
回复
我什么都没有做呀。。。主界面加载事件里我也没有打开了一个Usb设备,关闭程序的时候,我也关闭了对应的usb设备,子界面中的确开了一个线程,可是,我还没有进入那个有线程界面去开始工作。都会存在这个问题。。。甚至,我把打开和关闭usb设备的代码都注释掉。。也存在这个问题。。所以非常不解。。。
houyanjun 2011-05-18
  • 打赏
  • 举报
回复
如果你程序中含有线程,该线程的引用最好放到class内都能访问,当你关闭form时候,把这个线程同时也结束掉。

你试试看

^_^
龍过鸡年 2011-05-18
  • 打赏
  • 举报
回复
是不是有线程在跑?
tianliang1 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wxm3630478 的回复:]
引用 9 楼 tianliang1 的回复:
5楼说的这种,我试过。。。isBackGround =true ,这样还是不能关闭任务列表中的进程。

为什么我的程序名称为:Bunchprogram.exe,但是在进程中看的话确实 Bunchprogram.vshost.exe

不用调试模式。就运行它的EXE文件。。发现这两个都会存在。。关闭后软件后。。Bunchprogram.exe没……
[/Quote]

啊。。。原来。。。关VisualStidio就没有那个进程了。。。
突然间明白这句话的意思。。


多谢大哥。。

这么细腻的问题都被你发现了。。无限膜拜。。。
tianliang1 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 study_hard_01 的回复:]
顶7楼的高人说法。
[/Quote]
很多人或许都不知道是怎么回事吧,就盲目模板。。
tianliang1 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 wxm3630478 的回复:]
引用 9 楼 tianliang1 的回复:
5楼说的这种,我试过。。。isBackGround =true ,这样还是不能关闭任务列表中的进程。

为什么我的程序名称为:Bunchprogram.exe,但是在进程中看的话确实 Bunchprogram.vshost.exe

不用调试模式。就运行它的EXE文件。。发现这两个都会存在。。关闭后软件后。。Bunchprogram.exe没……
[/Quote]
怎么关 vshost?手动结束进程?
houyanjun 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qldsrx 的回复:]

进程无法结束,说明有独立的线程在工作,不要怀疑,肯定是有,至于为什么会工作而不停止,得见了代码才知道。一般我们都会用BeginInvoke方法来创建多线程,好处是,系统管理线程的结束,一旦你退出程序,那个线程一定会销毁让你及时退出,如果你自己创建一个线程,并Start()启动线程,那除非线程自己结束或者你收到终止线程,否则你占着进程不让你正常结束进程的。
[/Quote]

学习到了~标记
study_hard_01 2011-05-18
  • 打赏
  • 举报
回复
顶7楼的高人说法。
上帝的亲哥哥 2011-05-18
  • 打赏
  • 举报
回复
捕捉在窗体事件Form_Closing()退出时

判断 Thread t1.IsLive==true t1.Abort();//注意对象的null值判断,否则会异常

if(t1!=null)
{

}
buptwm 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 dafei198607 的回复:]
引用 7 楼 qldsrx 的回复:
进程无法结束,说明有独立的线程在工作,不要怀疑,肯定是有,至于为什么会工作而不停止,得见了代码才知道。一般我们都会用BeginInvoke方法来创建多线程,好处是,系统管理线程的结束,一旦你退出程序,那个线程一定会销毁让你及时退出,如果你自己创建一个线程,并Start()启动线程,那除非线程自己结束或者你收到终止线程,否则你占着进程不让你正常结束进程的。
……
[/Quote]
给力,觉得也是这么回事
wxm3630478 2011-05-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tianliang1 的回复:]
5楼说的这种,我试过。。。isBackGround =true ,这样还是不能关闭任务列表中的进程。

为什么我的程序名称为:Bunchprogram.exe,但是在进程中看的话确实 Bunchprogram.vshost.exe

不用调试模式。就运行它的EXE文件。。发现这两个都会存在。。关闭后软件后。。Bunchprogram.exe没有了。但是Bunchprogram.vshost……
[/Quote]

关 VSxxxx 就没啦
龍过鸡年 2011-05-18
  • 打赏
  • 举报
回复
你调用了一个方法? serialPort.ReadLine()?
加载更多回复(6)

110,538

社区成员

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

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

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