C#程序中建立了多个线程,当软件窗口关闭的时候为什么还占着电脑CPU呢?

如题所述

说明自己建的线程是前台线程,所以就一直占有CPU了,窗口消息循环算一个前台线程,要当所有的前台线程关闭后应用程序才能退出。
可以将Thread.IsBackground 属性设置为true使其转变为后台进程。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-31
调用的方法不对,有后台应用程序在,你可以在关闭的时候加一个检索
第2个回答  2012-12-31
肯定是该线程没有关哦。在关闭窗口closing事件中加上关闭这个线程的方法。这样关闭窗口的同时就会关闭这些线程了。

C#程序中建立了多个线程,当软件窗口关闭的时候为什么还占着电脑CPU呢...
说明自己建的线程是前台线程,所以就一直占有CPU了,窗口消息循环算一个前台线程,要当所有的前台线程关闭后应用程序才能退出。可以将Thread.IsBackground 属性设置为true使其转变为后台进程。

我在做一个多线程的程序,用C#写的,可是为什么我关闭了所有窗口以后,应 ...
1. 最好,但代码会有一点多,还有Application .exit 是退出消息泵,关闭窗口的,跟关闭线程没有多大关系。要使用 Environment.Exit

C#的WinForm程序子窗口关闭后仍存在进程问题.
窗体全是主线程创建的,仍存在应该是你资源没有释放干净。如子窗体中海油线程在跑等等。

C# socket服务器端 多线程客户端 如何少量使用CPU
2)建议你利用socket提供的异步回调 socket.BeginXXXXX() socket.EndXXXX 来实现多线程处理 --- 利用异步回调最大的好处是:(1)可以充分利用.net framework 的线程池中I\/O线程,最大限度降低CPU处理开销。曾经做过处理1000多个socket TCP客户端连接的程序,双核CPU平均占用不超过12%(2)网络通信过...

C#的WinForm程序子窗口关闭后仍存在进程问题.
答:如果创建了其它线程的话就会出现这样的情况,在Closing事件中你把你创建的线程Abort掉。。。就可以了的

C# 为什么我关闭窗体后,端口却还开着,程序还在进程中
Environment.Exit(0);先把资源释放,然后关闭 这个基本上能解决大多数关闭问题 我的方法你用了吗?你用下吧 肯定能关闭的

c# thread 一段时间后占满CPU
thread 开启后 里面是一个死循环,而且循环没有Sleep(1*time),导致cpu时间片连续占用,所以CPU高了

c# tcp程序关闭窗口后不会自动停止调试
窗口关闭主线程结束,监听的子线程还继续运行 可以把监听线程设置为后台线程 thread.IsBackground=true; 这样主线程结束子线程也结束 卡死应该是因为本机发了Connect等待虚拟机返回握手 如果虚拟机没开端口就没有回复 本机会等待到超时 所以就卡了 ...

c# 一个程序关闭,如果有前台线程还在运行,当前台线程运行完是否会关闭...
不会存在。程序关闭是指进程被释放了,而线程是依附于进程的,所以当进程结束后,线程自然也不存在了。

C# WinForm程序中,使用多线程,在关闭窗体时 怎么关闭窗体的所有线程。使...
程序退出的方法:this.Close(); 只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出;Application.Exit(); 强制所有消息中止,退出所有的窗体,但是若有托管线程(非主线程),也无法干净地退出;Application.ExitThread(); 强制中止调用线程上的...

相似回答
大家正在搜