Watchdog



  • Hai,

    ich möchte für meine Anwendung einen Watchdog realisieren.

    ich hätte mir gedacht, das ich ne Variable nehme diese mal zb. mit 50 initialisiere
    der Watchdog soll sie regelmässig dekrementieren und die Anwendung inkrementieren. erreicht die Variable 0 soll der Watchdog die Anwendung schliessen und neustarten ( was mich auch zum 2. Problem gleich bringt, wie kann ich und C# eine Anwenung abschiessen ) und sollte der Zähler 100 erreichen, soll eben die Anwendung versuchen den Watchdog neuzustarten.

    Also 1. Frage:
    Wie kann ich die gemeinsame Variable realisieren. Ich möchte eigentlich keine Datei verwenden, da es sonst ja zu überscheidungen kommen kann. Gleichzeitegr Zugriff und so.

    2. Frage:
    Wie kann ich unter C# einen Prozess abschiessen.



  • Zu 1.
    Du kannst es mit einem benannten Mutex versuchen o. seit DotNet2.0 auch mit Semaphoren, die Systemweet arbeiten.

    Zu 2.
    Einen Prozess kannst du mit Close oder rabiat mit Kill beenden. Lies mal die Unterschiede in der Hilfe nach. Vielleicht kannst du es ja gebrauchen. Ansonsten gibt es noch Messages, die man zwischen den Prozessen senden kann (musst aber die Win32 API Funktionen verwenden, Stichwort P/Invoke).

    WorstCase



  • Hab mir die Mutex mal etwas angesehen, und soweit ich das überblicken kann funktionieren die nur innerhalb einer Anwendung, oder?

    Der Wachtdog sollte eben ein unabhäniges Prog sein.



  • Einen Mutex kann man nicht wie eine Varianle behandeln aber mit benannten Mutex kann man Prozesse systemweit synchronisieren.

    Hier ein kurzes Bsp. (Instanz prüfen):

    private Mutex m_mutex;

    bool blnCreated;
    this.m_mutex = new Mutex(true, Application.ProductName, out blnCreated);

    if (!blnCreated)
    {
    MessageBox.Show(this, this.m_strMsgInstanceRunning, Application.ProductName,
    MessageBoxButtons.OK, MessageBoxIcon.Error);
    Application.Exit();
    }

    Es gibt aber auch andere Objekte zur Synchronisation von Prozessen.

    WorstCase



  • Syncronisieren will ich eigentlich nicht, oder besser gesagt das ist neicht mein vorrangiges Problem. Ich brauch ne Variable auf der 2 verschiedene Anwendungen schreibend und lesend zugreifen können.


Anmelden zum Antworten