Gå til innhold

Service som bare stopper


Anbefalte innlegg

Sitter og mekker en liten service, som i hovedsak inneholder en timer, som initieres og startes i onStart(), og som i hvert "tick" henter ut data fra en database og kjører en http-request (eller fler).

 

Problemet er når jeg starter denne får jeg meldingen: "Tjenesten startet, og stoppet igjen. Enkelte tjenester stopper automatisk når de ikke har noe å gjøre"...

 

Men den har jo pokkermeg noe å gjøre hele tiden :p Noen ideer?

 

her er onStart:

protected override void OnStart(string[] args)
       {
           conn = new SqlConnection(connectionString);
           conn.Open();
           timer = new Timer();
           timer.AutoReset = true;
           timer.Enabled = true;
           timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
           timer.Interval = 15000;
           this.timer.Start();

           if (!EventLog.SourceExists("My own log"))
           {
               EventLog.CreateEventSource("My own log", "System");
           }

           // Create an EventLog instance and assign its source.
           myLog = new EventLog();
           myLog.Source = "My own log";
           myLog.Log = "System";

           this.CanStop = false;
       }

 

(Og ja, jeg vet at timer.Start() og timer.Enabled = true er to sider av samme sak. Det er System.Timers.Timer som er brukt)

Lenke til kommentar
Videoannonse
Annonse

Paste coden...

 

btw. du MÅ skrive feilen til fil eller noe, MesageBox.Show() og Console.Writeline f.eks. funker dårlig fra en service...

 

Har aldri brukt Timer fra en service før. Bruker å starte en ny tråd jeg, men det skulle vel ikke ha noe å si.

 

Du bør også heller ikke åpne databaseconnectionen så tidlig. Den bør åpnes så sent som muig og lukkes så tidlig som mulig der den skal bli brukt. Siden det er en service kan det også lønne seg å skru av connectionpooling i connectionstring'en.

Lenke til kommentar

Jeg holder connection oppe så lenge servicen kjører, siden den kjører så ofte.

 

Jeg logger til EventLog... burde komme opp der...

 

Du mener jeg burde kjøre opp en ny tråd i servicen som igjen inneholder en timer? Høres litt risky ut i tilfelle den klikker og servicen må restartes mener jeg :\

 

Jeg HAR jo pastet koden. Problemet er jo tydeligvis at den ikke kjører timer_elapsed i det hele tatt... det er en logging der også, nemlig... og den skriver heller ikke noe til loggen...

Lenke til kommentar

Hva om det er koden for å skrive til eventloggen som kræsjer? :-P

 

Nei, når du kjører opp en ny tråd så trenger du ikke en timer, bare f.eks. koden:

while( ShouldIShutDown == false )

{

DoSomething();

Thread.Sleep(1000);

}

 

Men det går sikkert fint å bruke Timer isteden...

Lenke til kommentar

Det funka egentlig like dårlig. Kjørte ut en tråd nå, men får samme feilmelding... eller... informasjonsmelding, om at den har stoppet igjen.. blir litt frustrert her... :\

 

Den får heller ingen feil... Hadde den fått det hadde auto-loggingen til EventLog hentet det opp.

 

Edit: auto-loggingen HADDE plukket opp en feil :blush:

 

Edit2: og det VAR EventLoggingen som klikket :innocent:

 

*plystre stille og forsiktig*

Endret av Manfred
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...