Zum Inhalt springen

Frage bezüglich Windows Diensten


Gateway_man

Empfohlene Beiträge

hallo,

ich wollte gerade einen Dienst schreiben, welcher als Unsichbarer Hintergrundprozess dienen sollte und laut Timer alle 10 Minuten etwas überprüfen sollte.

Mir ist bekannt das die Startprozedur nicht länger als 30 sekunden dauern darf, da der Dienst sonst beendet wird.

Ich habe also der start Prozedur einzig und allein den Befehl gegeben den Timer zu aktivieren, jedoch wenn ich den Dienst starte führt er den im Timer geschriebenen Code nicht aus. Wenn ich den Timer weg lasse und den Inhalt dessen in die Start Prozedur kopiere, funktioniert alles wie gewollt, nur eben nur einmal und zwar beim start.

Wie mache ich es also, das wenn der Dienst gestartet wurde in einem Gewissen Zeitintervall, ein gewisser Codeteil ausgeführt wird?

Lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo!

Hast Du den Timer über die grafische Benutzeroberfläche hinzugefügt oder rein im Code erstellt?

Den Windows.Forms.Timer zu benutzen ist hier möglich aber leider total sinnfrei, da dieser auch eine Form zum handeln benötigt.

Du brauchst hier einen System.Timers.Timer

Siehe:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Diagnostics;

using System.Linq;

using System.ServiceProcess;

using System.Text;


namespace __WindowsService1

{

    public partial class Service1 : ServiceBase

    {

        public Service1()

        {

            InitializeComponent();

        }


        protected override void OnStart(string[] args)

        {

            System.Timers.Timer t = new System.Timers.Timer((double)5000);

            t.Elapsed += new System.Timers.ElapsedEventHandler(t_Elapsed);

        }


        void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

        {

            //Hier den Code der nach dem Intervall ausgeführt werden soll...

        }


        protected override void OnStop()

        {

        }

    }

}

So sollte der Timer auch greifen. Das Elapsed-Event fängst du mit einem Eventhandler ab und kannst hier den entsprechenden Code auführen.

Gruß,

Thomas

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...