社区
C#
帖子详情
跪求高人指导,Winfrom程序中,为什么关闭应用程序后还有进程在运行?
tianliang1
2011-05-18 11:12:06
一个普通的C#编写的Winfrom应用程序。
关闭程序后,在任务管理器中始终还是由一个刚才运行的进程存在。迷惑不解。。。
使用了很多方法。。如:Application.Exit();System.Environment.Exit(System.Environment.ExitCode);this.Dispose();
Application.ExitThread();等都不能让应用程序在关闭,让进程结束...这是为什么?
...全文
650
26
打赏
收藏
跪求高人指导,Winfrom程序中,为什么关闭应用程序后还有进程在运行?
一个普通的C#编写的Winfrom应用程序。 关闭程序后,在任务管理器中始终还是由一个刚才运行的进程存在。迷惑不解。。。 使用了很多方法。。如:Application.Exit();System.Environment.Exit(System.Environment.ExitCode);this.Dispose(); Application.ExitThread();等都不能让应用程序在关闭,让进程结束...这是为什么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
C#Winform锁屏功能(锁当前项目)
超时锁屏功能,前提: 系统为WinForm实现,
中
有一个主窗体; 1、当用户键鼠无操作超过10分钟,则锁定该系统(当前项目); 2、锁屏后弹出用户登录界面,登陆界面两个输入框,用户名、密码(均为simed); 3、锁屏后用户无法对系统其他页面做任何操作,仅能在登录界面录入用户名、密码,实现登录; 4、登陆成功后,
关闭
登录界面,系统恢复可录入状态; 5、主界面为Winform,一个Richtextbox,能够演示锁屏后无法操作,登录后可继续操作即可; 6、登录失败则提示“用户名或密码错误”,继续停留在登陆界面,录入的用户名保留,密码框清空,密码框获得焦点; 目前设置30秒就超时。
198个经典C#WinForm实例源码 超赞的完整版
"198个经典C#WinForm实例源码"包括: 1-窗体技巧 2-控件操作 3-图像操作 4-报表打印 5-系统操作 6-文件处理 7-网络操作 8-数据库操作 9-加密解密 10-硬件读写 11-游戏设计 "超赞的198个经典C#WinForm实例源码.zip " ~欢迎同学们下载共同学习~
C#winform 点叉叉按钮
关闭
一form窗体应用后,后台
进程
仍在
运行
的解决办法
如果要解决“C#winform 点叉叉按钮
关闭
一form窗体应用后,后台
进程
仍在
运行
”的问题,可以直接点击目录跳转到3.4
关闭
窗体的多种方法。前面为记录遇到该问题的一些过程。之前用C#做了一个日志备份的窗体应用
程序
,最近把这个
程序
完善了一下,在窗体上显示了配置文件
中
的一些信息,并且增加了更新按钮,点击会将一些比较重要的配置写到日志文件
中
。但是在测试的时候发现了一个问题,
运行
生成的Release文件
中
的exe文件(因为最后要放到服务器上使用,不会将整个项目拷贝过去,只拷贝Release文件)。
C#
winfrom
退出
关闭
应用
程序
1、Application.Exit();//退出应用
程序
2、this.Close(); //
关闭
3、System.Diagnostics.Process.GetCurrentProcess().Kill();//退出应用
程序
WinFrom
应用
程序
开机自启动
WinFrom
应用
程序
开机自启动,
WinFrom
应用
程序
开机自启动几种方式,我的思路是将启动路径写入注册表,在
程序
启动时执行将应用写入注册表,在下次重启时则会自动启动。可以自己在应用
程序
写复选框是否开机自启动,也可以在启动
winfrom
时,直接执行下面代码。.........
C#
111,088
社区成员
642,552
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章