Holen Sie sich ein Verfahren Private Working Set-Speicher
Versuchen, programmgesteuert zu bekommen, das private working set) eines Prozesses.
Derzeit bin ich in der Lage, um die arbeiten eingestellt, ohne Frage, aber haben Mühe, das private working set.
Hier die Methode:
private void GetProcessesForServer(string serverName)
{
var runningProcesses = new Process[0];
try
{
runningProcesses = Process.GetProcesses(serverName);
}
catch (Exception e)
{
ResultsPanel.Controls.Add(new Label { Text = string.Format("There was an error: {0}", e.GetBaseException().Message) });
}
IOrderedEnumerable<CustomProcess> processes = runningProcesses
.Select(process => new CustomProcess(process.Id, process.ProcessName, (process.WorkingSet64 / 1024)))
.ToList()
.OrderBy(process => process.ProcessName);
if (processes.Count() > 0)
ResultsLabel.Text = string.Format("Current running processes on {0}", ServerNamesDropDown.SelectedItem.Text);
ResultsGridView.DataSource = processes;
ResultsGridView.DataBind();
}
So, ich bin vorbei, die in einem server name dann versucht, alle Laufenden Prozesse dieser server dann unverbindlich die Liste der Prozesse, um eine grid-Ansicht. Funktioniert alles ohne Probleme aber ich brauche, um das private working set - ähnlich wie im Windows Task-manager, anstatt den insgesamt arbeiten festgelegt.
Vielen Dank,
Tim
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf Windows Vista und darüber hinaus gibt es das "Working Set - Private" - Leistungsindikator im "Prozess" - Kategorie (siehe msdn).
Gegeben, Sie sind auf einer solchen Plattform könnten Sie die
System.Diagonstics.PerformanceCounter
Klasse zur Abfrage dieser Informationen.Herstellen einer Verbindung zwischen einem Prozess-ID und einer bestimmten Leistungsindikator Beispiel, verwenden Sie die "Prozess-ID" Zähler, der einer Kategorie. In anderen Worten: lookup der Fall, wo der "Prozess-ID" - Zähler ist die gewünschte Prozess-ID, die Lesen den Wert von der "Working Set - Private" - Zähler.
Tipp: wenn Sie die Abfrage alle Werte für alle Verfahren nutzen die
System.Diagonstics.PerformanceCounterCategory.ReadCategory()
nennen, statt, wie es viel schneller das Lesen einzelner Indikatoren für alle Prozesse/Instanzen.Update: Es ist ein Artikel auf codeproject, die zeigt, wie sich dieser Wert errechnet, der auf XP/2000, wenn Sie müssen. Ich habe es nicht getestet, also nicht mir die Schuld 😉
Update 2: Sie können auch Auschecken dieser stackoverflow-Frage/Antwort.