Ich hatte ja im vorhergehenden Code bemängelt, dass man auf diese Art nicht alle Processe einfach beenden kann.
Der Nachfolgende Code ist lediglich einen kleine Erweiterung. Es wird versucht die Prozesspriorität auf den niedrigsten Wert zu setzen, dann der folgt der Versuch, den Prozess zu beenden.
Der User wird über das Ergebnis informiert.
''' <summary>
'''Beendet alle Prozesse, die nicht mehr reagieren.
''' </summary>
Private Function QuitAllNotRespondingProcesses() As String
Dim p As Process
Dim processes As Process()
Dim sb As New StringBuilder
processes = Process.GetProcesses()
For Each p In processes
If Not p.Responding Then
Try
p.PriorityClass = ProcessPriorityClass.Idle
Thread.Sleep(1000)
p.Kill()
sb.AppendLine(p.ProcessName.ToString & " wurde beendet")
Catch ex As Exception
sb.AppendLine(p.ProcessName.ToString & " konnte nicht beendet werden")
End Try
End If
Next
Return sb.ToString
End Function
Kommentare zum Snippet