Как узнать, сколько потоков запущено в многопоточном приложении службы Windows - PullRequest
0 голосов
/ 28 августа 2009

У меня есть многопоточное приложение службы Windows, я хочу каждый момент знать, сколько потоков (с идентификатором потока, именем потока, соответствующим идентификатором процесса) запущено моим приложением.

Спасибо заранее.

Ответы [ 3 ]

7 голосов
/ 28 августа 2009

С C #

using System;
using System.Diagnostics;
class Program
{
    static void Main(string[] args)
    {
        Process proc = Process.GetCurrentProcess();
        Console.WriteLine(proc.Threads.Count.ToString());
    }
}

Если вы хотите рабочие потоки для какого-либо другого процесса (не текущего приложения), измените GetCurrentProcess () на GetProcessById (требуемый процесс) или GetProcessByName (требуемый процесс)

Если вы хотите получить что-то конкретное из тем

proc.Threads[index].[take a look at the properties];

РЕДАКТИРОВАТЬ: Как я могу получить все потоки имя процесса?

using System;
using System.Diagnostics;
class Program 
{ 
    static void Main(string[] args) 
    {
        Process[] proc = Process.GetProcessesByName("youprocess");
        Console.WriteLine(proc[0].Threads.Count.ToString()); 
    } 
}

GetProcessesByName возвращает массив процессов (возможно несколько процессов с одинаковыми именами). Если вы уверены, что есть только один - proc [0] - это то, что вам нужно. Если их несколько, вы можете получить к ним доступ с помощью index - proc [0], proc 1 и т. Д. Proc имеет значение null, если нет процессов с «вашим именем»

2 голосов
/ 28 августа 2009

Отличная утилита для выполнения того, что вы описываете - Process Explorer:

http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

1 голос
/ 13 сентября 2013

С помощью диспетчера задач Windows

Ctrl-Alt-Del
View->SetColumns
Check Thread Count
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...