获取c#中进程的打开线程数

本文关键字:线程 进程 获取 | 更新日期: 2023-09-27 17:57:27

我想从我的应用程序中运行的进程打开的线程数,以运行应用程序。我使用以下代码

p.StartInfo = new ProcessStartInfo(Application.StartupPath + @"'bin'childApp.exe", parametr);
p.StartInfo.CreateNoWindow = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();

我想知道这个应用程序打开了多少线程我运行它我在这项工作中使用了这个代码,但当每秒钟使用一次时,CPU使用量很大

private int GetThread(string AppId)
        {
            try
            {
                string queryString = "select ThreadCount from Win32_Process WHERE ProcessId='" + AppId + "'";
                SelectQuery query = new SelectQuery(queryString);
                ManagementScope scope = new System.Management.ManagementScope(@"''.'root'CIMV2");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);
                ManagementObjectCollection processes = searcher.Get();
                int result = 0;
                foreach (ManagementObject mo in processes)
                {
                    result = Convert.ToInt32(mo["ThreadCount"]);
                    break;
                }
                return result;
            }
            catch
            {
                return 0;
            }
        } 

有别的办法吗?

获取c#中进程的打开线程数

p.Refresh();
var threadCount = p.Threads.Count;