Newbie; Timer?
13 svar · 416 visningar · startad av znyder
Kika på MSDN efter klassen Timer så finns det några exempel, förslagsvis sätter du upp timerna i Application_OnStart i global.asax
Behöver du verkligen kolla databasen var femte minut? Nästan alla som frågar efter något sådant bara tror att de behöver göra det. Lösningen är oftast istället att hålla reda på den förra tidpunkten, och när någon behöver informationen beräkna hur lång tid som gått.
tänkte ha en liten auktionssajt :D
Detta är er egentligen ett vanligt problem. Finns många bra anledningar att lägga in en timer.
Det du måste göra är att skapa en klass med statiska funktioner. Sedan måste du köra igång timern i app_start i global.asax.
Sök på msdn så klurar du ut det. Men klassen måste vara "static" som kör timern.
Vad är det i en auktions-sajt som skulle göra att du behöver kolla saker hela tiden? När ingen besöker sajten så är det väl helt ointressant om det händer något eller inte?
VIll ha timern så den skickar ut meddelanden i perfekt tid. Inte 1 timme senare :D
asmodie: Tack, ska kolla upp de.
jo, men webbhotellen gillar inte att ha program som man gjort ;D
Funderar nu själv på att använda den här metoden för att med jämna mellanrum försöka skicka eventuella felrapporter från noder till en huvudserver.
Det som jag funderar över är vad som händer om webbservern stänger ned webbapplikationen? Eftersom Timer-objektet ligger i global.asax så kommer ju även det objektet att försvinna då. Det måste ju innebära att timern enbart fungerar så länge webbservern låter bli att stänga ned webbapplikationen?
Kan du inte låta huvudservern trigga noderna då?
att timern enbart fungerar så länge webbservern låter bli att stänga ned webbapplikationen?
Du lär ha större problem än att ditt timer objekt har försvunnit om de stänger ner webapplikation, eftersom siten faktiskt inte är tillgängli då, vilket garanterat är ett brott mot det avtal som du har mellan dig och serverhotellet.
Jag håller dock med McFetto att en bättre lösning i detta fallet är att servern frågar klienterna via en webservice om de har någon felinformation att rapportera, men en ändå bättre lösning är att felrapporten skickas till servern direkt när felet inträffar.
- M
Mc Fetto skrev:
Kan du inte låta huvudservern trigga noderna då?
Visserligen, men då måste huvudservern kontakta alla noderna varje gång, oavsett om det behövs eller inte.
Gladh skrev:
att timern enbart fungerar så länge webbservern låter bli att stänga ned webbapplikationen?
Du lär ha större problem än att ditt timer objekt har försvunnit om de stänger ner webapplikation, eftersom siten faktiskt inte är tillgängli då, vilket garanterat är ett brott mot det avtal som du har mellan dig och serverhotellet.
Bara för att webbapplikationen stängs ned så stängs inte siten ned. Så fort någon gör en request så startas ju applikationen.
Gladh skrev:
Jag håller dock med McFetto att en bättre lösning i detta fallet är att servern frågar klienterna via en webservice om de har någon felinformation att rapportera, men en ändå bättre lösning är att felrapporten skickas till servern direkt när felet inträffar.
I det här faller så är det inte en bättre lösning att skicka rapporten direkt. Noderna kommer nämligen att köra en webservice som kan komma att anropas många gånger. Ifall ett värde saknas så kan det resultera i tusentals felrapporter. Ifall dessa skickades direkt så skulle det innebära att den som ska kontaktas om att komplettera värdena skulle få tusentals mail.
Bara för att webbapplikationen stängs ned så stängs inte siten ned. Så fort någon gör en request så startas ju applikationen.
Efter lite mer läsning så håller jag med, måste ha tänkt på ASP's Application_onStart() som kördes när IIS:en startade. Ivilket fall som helst så kan du göra en riktigt fulling och i Application_onEnd kalla din egen site igen, vilket betyder att din application alltid kommer att vara igång.
- M