当前位置: 首页 > article >正文

c# 显示正在运行的线程数

在 C# 中,若想获取当前进程正在运行的线程数,可以使用 System.Diagnostics 命名空间中的 Process 类来实现。该方法适用于 Windows 平台,并能够获取当前进程的线程信息,包括线程总数和运行中的线程数量。


✅ 方法一:使用 Process 类获取线程数

1. 获取当前进程的线程总数

using System;
using System.Diagnostics;class Program
{static void Main(){Process currentProcess = Process.GetCurrentProcess();int totalThreads = currentProcess.Threads.Count;Console.WriteLine($"当前进程的线程总数: {totalThreads}");}
}

2. 获取当前运行中的线程数(状态为 Running 的线程)

using System;
using System.Diagnostics;
using System.Linq;class Program
{static void Main(){Process currentProcess = Process.GetCurrentProcess();int runningThreads = currentProcess.Threads.Cast<ProcessThread>().Count(t => t.ThreadState == ThreadState.Running);Console.WriteLine($"当前运行中的线程数: {runningThreads}");}
}

注意ThreadState 枚举值包括 RunningWaitTransitionTerminated 等,仅过滤 Running 状态的线程,能更准确地反映当前正在执行的线程数量。


🔄 实时监控线程数

若需实时监控线程数的变化,可以使用循环和 Thread.Sleep 定期刷新:

using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;class Program
{static void Main(){while (true){Process currentProcess = Process.GetCurrentProcess();int totalThreads = currentProcess.Threads.Count;int runningThreads = currentProcess.Threads.Cast<ProcessThread>().Count(t => t.ThreadState == ThreadState.Running);Console.WriteLine($"总线程数: {totalThreads} | 运行中的线程数: {runningThreads}");Thread.Sleep(1000); // 每秒刷新一次}}
}

📌 注意事项

项目说明
权限要求通常不需要管理员权限,即可访问当前进程的线程信息。
跨平台兼容性Process.ThreadsThreadState 仅在 Windows 平台上支持,在 Linux/macOS 上可能不支持或返回错误。
线程池线程若需监控线程池中的线程(如 ThreadPool 管理的线程),可使用 ThreadPool.GetAvailableThreads 等方法,但不等同于实际运行的线程数。
性能影响频繁查询线程状态对性能影响较小,但不建议在高频循环中频繁调用。

📈 方法二:使用性能计数器(PerformanceCounter)

如果希望使用性能计数器监控线程数,也可以通过 PerformanceCounter 类实现:

using System;
using System.Diagnostics;class Program
{static void Main(){PerformanceCounter threadCounter = new PerformanceCounter("Process", "Thread Count", Process.GetCurrentProcess().ProcessName);while (true){float threadCount = threadCounter.NextValue();Console.WriteLine($"当前线程数(性能计数器): {threadCount}");Thread.Sleep(1000);}}
}

注意:此方法依赖于性能计数器的配置,某些情况下可能需要管理员权限,且在非 Windows 系统上可能不可用。


✅ 总结

方法适用场景优点缺点
Process.Threads获取当前进程线程信息简单易用,支持线程状态过滤仅限 Windows,无法获取线程池线程
PerformanceCounter监控线程数支持性能监控配置较复杂,可能需要管理员权限
ThreadPool.GetAvailableThreads线程池线程监控适用于异步任务不反映实际运行线程数

通过上述方法,你可以灵活地在 C# 中监控当前进程的线程数,无论是总线程数还是运行中的线程数,都可以根据实际需求进行选择和实现。

http://www.lryc.cn/news/2399115.html

相关文章:

  • MySQL 日志数据同步的详细教程
  • 2025 Java面试大全技术文章(面试题1)
  • docker 中 什么是「卷」?(Volume)
  • 三维可视化和实时数据处理对前端性能要求以及优化渲染效率
  • 基于VU37P的高性能采集板卡
  • 2025-05-31 Python深度学习10——模型训练流程
  • 卷积神经网络(CNN)、YOLO和人脸识别之间的关系
  • K8S StatefulSet 快速开始
  • 重新测试deepseek Jakarta EE 10编程能力
  • nav2笔记-250603
  • 指纹识别+精准化POC攻击
  • LeetCode[404]左叶子之和
  • mac环境下的python、pycharm和pip安装使用
  • C语言多级指针深度解析:从一级到三级的奥秘
  • uni-app学习笔记十九--pages.json全局样式globalStyle设置
  • BUUCTF[极客大挑战 2019]Havefun 1题解
  • 【基础】Unity中Camera组件知识点
  • Tomcat优化篇
  • Temporal Fusion Transformer(TFT)扩散模型时间序列预测模型
  • 【LangServe部署流程】5 分钟部署你的 AI 服务
  • 攻防世界-unseping
  • 微软推出 Bing Video Creator,免费助力用户轻松创作 AI 视频
  • (13)java+ selenium->元素定位大法之By_partial_link_text
  • Xget 正式发布:您的高性能、安全下载加速工具!
  • [yolov11改进系列]基于yolov11使用FasterNet替换backbone用于轻量化网络的python源码+训练源码
  • 一周学会Pandas2之Python数据处理与分析-Pandas2数据绘图与可视化
  • 企业级安全实践:SSL/TLS 加密与权限管理(一)
  • 2025——》VSCode Windows 最新安装指南/VSCode安装完成后如何验证是否成功?2025最新VSCode安装配置全攻略
  • RabbitMQ如何保证消息可靠性
  • 【MATLAB代码】制导——三点法,二维平面下的例程|运动目标制导,附完整源代码