Feedback

C# - Alle hängenden Prozesse beenden

Veröffentlicht von am 08.12.2007
(2 Bewertungen)
Die folgende Funktion beendet alle Prozesse, die nicht mehr reagieren.

benötigte Namespaces:
System.Diagnostics
System.Threading

Funktion wurde geupdatet (siehe Kommentar).
/// <summary>
/// Beendet alle Prozesse, die nicht mehr reagieren.
/// </summary>
/// <returns>
/// Zeichenkette, die angibt, welche Processe beenden wurden
/// und welche nicht beendet werden konnten.
/// </returns>
public static String QuitAllNotRespondingProcesses()
{
    StringBuilder stringBuilder = new StringBuilder();

    foreach (Process process in Process.GetProcesses())
    {
        if (!process.Responding)
        {
            try
            {
                process.PriorityClass = ProcessPriorityClass.Idle;
                Thread.Sleep(1000);
                process.Kill();
                stringBuilder.AppendLine(process.ProcessName + " wurde beendet");
            }
            catch (Exception)
            {
                stringBuilder.AppendLine(process.ProcessName + " konnte nicht beendet werden");
            }
        }
    }
    return stringBuilder.ToString();
}
Abgelegt unter Process, Prozess.

1 Kommentare zum Snippet

Volker Steitz schrieb am 09.12.2007:
Leider ist das nicht so ganz richtig. Hängende Prozesse die in einer hohen Priorität laufen (z.B. Realtime) kann man auf diese Art und weise nicht beenden.
Hierzu muss man zuerst einmal die Priorität herunterstufen - dann kann man die Prozese beenden.

Damit das auch gelingt, muss man allerdings über die entsprechenden Administativen Rechte verfügen.
 

Logge dich ein, um hier zu kommentieren!