C#获取线程数量

我写的一个程序中用到了线程,但我想查现在有多少本程序产生的线程,怎么获得?

打开任务管理器, 查看---选择列----线程数 勾起来后,就可以查看到每个程序的线程数了。

或者
using System.Diagnostics;
Process.GetCurrentProcess().Threads.Count;
可获取到线程的数量。

获取正在使用的线程数量:
int n = 0;
foreach (ProcessThread th in Process.GetCurrentProcess().Threads)
{
if (th.ThreadState == ThreadState.Running)
{
n++;
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-26
以记事本进程为例,在该进程启动的情况下:

Process[] myProcess = Process.GetProcessesByName("Notepad");//获取该进程
Process p = myProcess[0];
ProcessThreadCollection PTC = p.Threads;//获取其关联的线程,包括主线程
int num = PTC.Count.ToString();//获取线程数量本回答被网友采纳
第2个回答  2013-08-26
你应该将你定义的所有线程放进线程池管理,这样你就知道有多少个产生的线程了。
详细MSDN

C#获取线程数量
打开任务管理器, 查看---选择列---线程数 勾起来后,就可以查看到每个程序的线程数了。或者 using System.Diagnostics;Process.GetCurrentProcess().Threads.Count;可获取到线程的数量。获取正在使用的线程数量:int n = 0;foreach (ProcessThread th in Process.GetCurrentProcess().Threads){ if ...

c#怎么获取计算机任务管理器中进程对应的线程数量
c#获取计算机任务管理器中进程对应的线程数量的方法 打开任务管理器, 查看---选择列---线程数 勾起来后,就可以查看到每个程序的线程数了。或者 using System.Diagnostics;Process.GetCurrentProcess().Threads.Count;可获取到线程的数量。获取正在使用的线程数量:int n = 0;foreach (ProcessThread t...

C# 如何获得当前程序运行中的所有线程。并且 暂停 和 恢复运行
txtBasePri.Format("ProcessThreadManager - [线程数:%d]", lstCtrl.GetItemCount());SetWindowText(txtBasePri);} CloseHandle(hSnap);}

.net(C#)中,一个进程最多能创建多少线程
理论上可用虚拟空间是2G,默认情况下,Thread的栈的大小是1MB,所以理论上最多只能创建2048个Thread,这个栈的大小默认值是编译器预设的,你也可以改.你这个不是问题的,服务器只是用于一座桥的作用,并不提供具体通讯,一般做法是这样的:用户1进入服务器,给他一个标记结构,比如包含用户1的IP+他的可用端口....

C# 如何获取当前方法所在的线程?
Thread.CurrentThread 获得的就是执行改方法的线程,你肯定是开了很多线程,线程有自己的线程ID,你可以通过打印的方式将线程ID打印出来看看是不是结束正确的。我不明白你所表述的代码逻辑,但是Thread.CurrentThread 绝对得到的是执行该方法的线程。

一个c#程序最多可以开多少个线程?
一个进程可以开启的线程受可用内存限制,如果是32位的机器,那么默认一个进程有2G的可用内存,而每个线程默认分析1M的栈空间,所以这种情况下理论最线程数在2000多个。一个解决办法是创建线程时减少线程栈的大小或是使用64位的系统。64位系统应该可以忽略这个问题了。当然受cpu及磁盘速度及物理内存的限制。

C#大数据量问题
ThreadState:获取一个值,该值包含当前线程的状态。2. ThreadPool:提供一个线程池,该线程池可用于发送工作项、处理异步 I\/O、代表其他线程等待以及处理计时器。BindHandle:将操作系统句柄绑定到 ThreadPool。GetAvailableThreads:检索由 GetMaxThreads 方法返回的最大线程池线程数和当前活动线程数之间的...

初学C#,现有 多线程处理数据问题: 有1000条记录,每条记录都要这样处理...
你的程序还能正常运行,而不会“卡死”。那么,你就只需要创建一个线程就可以了。另外,你所说的“每条记录都要读取”,一定不能循环1000次来读取,循环连续访问数据库是编程的大忌。一次性读取,然后在程序里循环分析,最后将分析结果统一的一次性保存数据。

c#线程池如何控制并发最大线程数
如果不考虑服务器实际可支持的最大并行线程个数,程序不停往线程池申请新的逻辑线程,这个时候我们可以发现CPU的使用率会不断飙升,并且内存、网络带宽占用也会随着逻辑线程在CPU队列中堆积,而不断增大。如果我们想在主程序有200个http网络通讯需要执行,如何每次循环用10个线程并发处理10个网络http通讯回话...

C#怎么通过线程的标识找对应模块
可以通过一下方法获取到:static void Main(string[] args){ Process[] pros = Process.GetProcessesByName("QQ"); foreach (var pro in pros) { foreach (ProcessModule module in pro.Modules) { Console.WriteLine("{0}\\t{1}\\t[{2}]", pro.ProcessName, \/\/进...

相似回答