Zum Hauptinhalt springen
Veröffentlicht am

Process-Klasse in C#

Teilen:

Einführung

Die Welt der Softwareentwicklung ist weitläufig, und wenn es um die Interaktion mit dem Betriebssystem geht, kann die Komplexität schnell zunehmen. C# ist eine leistungsstarke Sprache, die eine Reihe von Klassen und Bibliotheken anbietet, um diese Interaktion zu erleichtern. Eine der nützlichsten Klassen für die Prozessbearbeitung ist die Process-Klasse.

Was sind Prozesse?

Bevor wir uns die Klasse selbst anschauen, ist es wichtig zu verstehen, was Prozesse sind. In Betriebssystemen ist ein Prozess eine Instanz eines laufenden Programms. Er enthält den Programmcode und seinen aktuellen Zustand. Prozesse sind für Multitasking unerlässlich und ermöglichen es, mehrere Programme gleichzeitig auszuführen.

Die Process-Klasse erkunden

Die Process-Klasse, die Teil der System.Diagnostics-Bibliothek ist, stellt eine verwaltete Darstellung eines Prozesses dar. Sie ermöglicht es Entwicklern, Prozesse zu starten, zu überwachen und zu steuern, unabhängig davon, ob sie lokal oder remote sind.

Wichtige Methoden und Eigenschaften:

  1. Start(): Eine der am häufigsten verwendeten Methoden. Sie startet einen Prozess und gibt eine Instanz desselben zurück.
  2. Kill(): Wie der Name vermuten lässt, "tötet" sie einen Prozess. Bei der Verwendung dieser Methode ist besondere Vorsicht geboten, um Datenverlust oder unerwünschtes Verhalten zu vermeiden.
  3. Close(): Im Gegensatz zu Kill() gibt diese Methode nur die dem Prozess zugeordneten Ressourcen frei.
  4. GetProcesses(): Unverzichtbar für die Überwachung, gibt sie eine Liste aller laufenden Prozesse zurück.
  5. GetProcessesByName(): Eine Variante der vorherigen Methode, die Prozesse nach Namen filtert.

Mit Ereignissen arbeiten:

Ein weiteres leistungsstarkes Merkmal der Process-Klasse ist die Möglichkeit, mit Ereignissen zu arbeiten. Das Ereignis Exited beispielsweise informiert das Programm darüber, wenn ein Prozess seine Ausführung beendet hat.

Häufige Anwendungsfälle:

  • Aufgabenautomatisierung: Automatisierung wiederkehrender Aufgaben, wie das Öffnen einer Reihe von Programmen beim Start des Computers.
  • Ressourcenüberwachung: Überwachung der Ressourcennutzung durch bestimmte Prozesse und entsprechendes Handeln.
  • Integration mit anderer Software: Beispielsweise das Starten einer Bildbearbeitungssoftware aus einem Fotoverwaltungsprogramm heraus.

Praktisches Beispiel

using System;
using System.Diagnostics;
using System.Linq;

namespace Base {
  class ProzessKlasse {
    // private Process prozess;
    private Process[] prozesse;

    public void Run() {
      /*
        prozess = Process.Start("notepad.exe");
        prozess.Kill();

        Console.Write("Suchen nach: ");
        var suche = Console.ReadLine();
        BeiGoogleSuchen(suche);
      */

      prozesse = Process.GetProcessesByName("chrome");
      Console.WriteLine($"Anzahl der Prozesse: {prozesse.Count()}");

      foreach (var prozess in prozesse)
        Console.WriteLine($"Prozessname: {prozess.ProcessName}");
    }

    private void BeiGoogleSuchen(string suche) {
      var anwendung = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe";
      Process.Start(anwendung, $"https://www.google.com/search?q={suche}".Replace(' ', '+'));
    }
  }
}

/*
  Anzahl der Prozesse: 28
  Prozessname: chrome
  Prozessname: chrome
  Prozessname: chrome
  ...
*/

Fazit

Die Process-Klasse ist ein unverzichtbares Werkzeug für jeden C#-Entwickler. Sie eröffnet ein breites Spektrum an Möglichkeiten zur Interaktion mit und Steuerung von Betriebssystemprozessen. Mit dieser Macht geht jedoch die Verantwortung einher, sie korrekt und mit Bedacht einzusetzen.

Happy coding!