Manfred Skrevet 6. mars 2006 Del Skrevet 6. mars 2006 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 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
j000rn Skrevet 6. mars 2006 Del Skrevet 6. mars 2006 Hva med en liten try/catch og skrive feilen ut til fil ellerno? :-P Lenke til kommentar
Manfred Skrevet 6. mars 2006 Forfatter Del Skrevet 6. mars 2006 Nå erru jævlig vanskelig så langt jeg kan se er det ingen feil, men skal prøve da... for din skyld, pus... Lenke til kommentar
Manfred Skrevet 6. mars 2006 Forfatter Del Skrevet 6. mars 2006 Sånn... der var det en try-catch på plass og, som forventet, gir denne ingenting, fordi det oppstår ingen feil. Lenke til kommentar
j000rn Skrevet 6. mars 2006 Del Skrevet 6. mars 2006 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
Manfred Skrevet 6. mars 2006 Forfatter Del Skrevet 6. mars 2006 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
j000rn Skrevet 6. mars 2006 Del Skrevet 6. mars 2006 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
Manfred Skrevet 6. mars 2006 Forfatter Del Skrevet 6. mars 2006 (endret) 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 Edit2: og det VAR EventLoggingen som klikket *plystre stille og forsiktig* Endret 6. mars 2006 av Manfred Lenke til kommentar
j000rn Skrevet 6. mars 2006 Del Skrevet 6. mars 2006 Skriv feilen til fil! :-P Skal nesten vedde på at det er eventlog koden din som kræsjer.... evt... try { // masse rart } catch(Exception ee) { try { ErrorToEventLog(ee); } catch(Exception eee) { ErrorToFile(ee,eee); } } Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå