Service-Anwendung in Wartezustand versetzten



  • Hallo,

    ich habe jetzt eine kleine Anwendung als Service/Dienst geschrieben.
    Nur habe ich das Problem das mir gerade keine vernünftige Lösung einfällt wie
    ich es hin bekomme die Anwendung in einen Ruhezustand zu versetzten so das Sie
    nur auf Ereignisse reagiert.

    Denn nach dem

    WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
      // QUELLCODE
    
      // ENDE
    }
    

    fertig durchlaufen ist beenden sich die Applikation ähnlich einer Konsolenanwendung.

    Mit while(true) überprüfen und auf Ereignisse prüfen... Naja ich hätte gerne noch was von meiner CPU Power 😉



  • Hallo Slashi
    ich glaube der Befehl WaitMessage könnte dir weiterhelfen.
    Bin allerdings nicht im Thema.

    mfg Schlumpi



  • Das ist kein Service, sondern eine gewöhnliche Win32-Anwendung (und das ist auch richtig so). Und eine solche benötigt, um Messages empfangen zu können, ein Fenster.



  • schau mal in der BCB Hilfe unter TServiceApplication. Da findest du auch ein Beispiel, wie man sowas aufbaut und wie das mit dem Ruhezustand funktioniert.
    Der Servicethread läuft einfach immer und du schaust nur ob irgendwas passiert ist. Stichwort "while(!terminated)".

    viel erfolg

    mfg Stephan

    edit: schreibfehler beseitigt



  • Super Danke jetzt habe ich schonmal einen Hinweis nach was ich suchen kann.

    audacia schrieb:

    Das ist kein Service, sondern eine gewöhnliche Win32-Anwendung (und das ist auch richtig so). Und eine solche benötigt, um Messages empfangen zu können, ein Fenster.

    Aha und das Siehst Du woran?^^



  • Falls es jemanden interessiert wie ich es gelösst habe,

    Nachdem meine initial Prozeduren verarbeitet sind läuft das Programm in eine Schleife die ca. so aussieht

    [cpp]while ( !Service2->Terminated )
    { // Auf Ereignisse checken!
    Sleep(500);
    }

    Anderer Quellcode der Parallel läuft wird in seperaten Threads ausgeführt, die
    recht ähnlich aufgebaut sind. Trotz des Sleep() in der Main laufen dabei die Threads weiter so wir mir scheint.

    Prozessorlast beläuft sich dabei fast gegen NULL.

    Sollte ich dabei einen Knick in meiner Logik haben wäre ich für einen Tipp sehr dankbar.


Anmelden zum Antworten