Quick Tips: Trabalhando com processos do windows - Parte 7

Nesta quick veremos como listar as threads de um determinado processo.

Quick Tips: Trabalhando com processos do windows - Parte 7

 

Nesta quick veremos como listar as threads de um determinado processo.

 

Vamos utilizar o mesmo exemplo anterior, só que agora adicione mais um listBox.




Ao selecionarmos o processo, iremos carregar todas as suas threads no listBox3. Para isso, vamos criar o seguinte método:

 

public void LoadThreads(Process processo)

{

//Limpa o listBox3

listBox3.Items.Clear();

//Carrega todas as threads do processo

ProcessThreadCollection threads = processo.Threads;

//percorre todas as trheads e adiciona no listBox3

foreach (ProcessThread t in threads)

{

//se thread estiver com estado Wait então exibe o motivo do espera

if (t.ThreadState==ThreadState.Wait)

listBox3.Items.Add(t.Id.ToString() + " | " + t.ThreadState.ToString() + " | " + t.WaitReason.ToString() + " | " + t.PriorityLevel.ToString());

else

listBox3.Items.Add(t.Id.ToString() + " | " + t.ThreadState.ToString() + " | " + t.PriorityLevel.ToString());

}

}

 

Agora basta incluirmos a chamada a este método no método LoadInfoProcess, que ficará assim:

 

public void LoadInfoProcess(Process processo) {

label2.Text = "Estado do processo: " + GetProcessState(processo).ToString();

label3.Text = "Nome do processo: " + processo.ProcessName;

label4.Text = "Prioridade do processo: " + processo.PriorityClass.ToString();

label5.Text = "Arquivo de execução: " + processo.StartInfo.FileName;

label6.Text = "Total de memória física: " + (processo.WorkingSet64 / 1024).ToString("d");

label7.Text = "Total de memória virtual: " + (processo.VirtualMemorySize64 / 1024).ToString("d");

label8.Text = "Tempo de processamento: " + processo.TotalProcessorTime.ToString();

label9.Text = "Pico de consumo de memória física: " + processo.PeakWorkingSet64.ToString("d");

label10.Text = "Pico de consumo de memória virtual: " + processo.PeakVirtualMemorySize64.ToString("d");

label11.Text = "Mínimo permitido de consumo de memória: " + processo.MinWorkingSet.ToString();

label12.Text = "Máximo permitido de consumo de memória: " + processo.MaxWorkingSet.ToString();

LoadModules(processo);

LoadThreads(processo);

}

 

O resultado que temos é o seguinte:




É isso aí pessoal, nossa série termina aqui. Espero que tenham gostado.

Fiquem a vontade para criticar, tirar dúvidas e sugerir novos temas.
Abraço.

Ricardo Coelho

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados