【发布时间】:2020-10-08 03:34:23
【问题描述】:
如何使用 C#/LINQ 计算和显示操作系统中的线程总数, 基本上是在找这样的东西:
var query = from p in Process.GetProcesses()
select new
{
count = sum(p.Threads.Count)
};
【问题讨论】:
-
不确定您实际在寻找什么,但有一点警告,当前的答案给出了当前创建的线程,例如。 TheGeneral 的答案在我的机器上输出 3347 个线程,但这个数字与操作系统可能同时运行的数字相差甚远。因此,如果我在哪里查看
ThreadState == ThreadState.Running,结果只会得到 9。 vivek nuna 的第二个答案将查询限制为仅CurrentProcess,因此您只会获得一个代表您在自己的进程中创建的线程的数字,无论线程是否正在运行。 -
这里查询
ThreadState-var runningCount = Process.GetProcesses().SelectMany(x => x.Threads.OfType<ProcessThread>()).Count(x => x.ThreadState == ThreadState.Running); -
@RandRandom 我认为,您应该发布您的代码作为答案:)
-
@PavelAnikhouski - 正如我所说的“不确定你真正在寻找什么”,所以我不知道 OP 想要什么,所以我不愿意回答恕我直言的问题清除