Avatar billede repsak Nybegynder
18. oktober 2003 - 15:46 Der er 11 kommentarer og
2 løsninger

Timer i C#

Hvorfor virker eksemplet på
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemTimersTimerClassctorTopic2.asp
ikke uden while(Console.Read()!='q'); ???

Jeg skal lave en applikation som bare kører en metode hvert minut, men jeg kan ikke bruge eksemplet uden den while-løkke. :-(
Avatar billede nielslbeck Nybegynder
18. oktober 2003 - 16:29 #1
Hvis ikke du har while-løkken stopper programmet jo bare med det samme.

I stedet for while-løkken kan du kunne bruge:

Thread.CurrentThread.Suspend();

Så skal du bare lige øverst i din .cs-fil tilføje:

using System.Threading;
Avatar billede odegaard Nybegynder
18. oktober 2003 - 16:40 #2
Du skal tænke på at du med timeren har to tråde kørende. Den ene er timer-tråden, den anden er din "hoved"-tråd. Stopper hoved-tråden, stopper programmet. Med andre ord er du nødt til at holde tråden i gang. Det gøres fx. med en while-løkke.
Hvis du laver winforms, så holdes UI-tråden kørende automatisk, så længe du ikke har lukket applikationen.
Avatar billede repsak Nybegynder
18. oktober 2003 - 17:03 #3
ok jeg forstår... mit konkrete problem er at jeg skal starte en timer fra Application_Start() i global.asax (asp.net), men det er som om at den aldrig stopper. Jeg kan ikke se nogle sider på mit domæne :-(

    public class Global : HttpApplication{
        private Timer timer;
               
        public void Application_Start(Object sender, EventArgs e) {
            timer = new Timer(5000);
            timer.Elapsed+=new ElapsedEventHandler(OnTimedEvent);
            timer.Enabled=true;
            timer.AutoReset=true;
            System.Threading.Thread.CurrentThread.Suspend();
        }

        private void OnTimedEvent(object source, ElapsedEventArgs e){
            ;
        }
    }
Avatar billede odegaard Nybegynder
18. oktober 2003 - 17:12 #4
Du kan ikke starte sådan en service derfra. For det er ganske korrekt at den aldrig stopper, og du vil dermed låse hele dit website.
Hvis det er det du vil, så må du lave en windowsservice der kører i baggrunden.
Avatar billede repsak Nybegynder
18. oktober 2003 - 17:16 #5
hvordan gør jeg det? Det er ikke mig som hoster web-serveren
Avatar billede nielslbeck Nybegynder
18. oktober 2003 - 18:24 #6
Hvis det er på en webserver som du ikke selv har kontrollen over, kan du ikke installere en Windows-service. Hvis det ikke er fra en webserver det skal køres, kan du bruge mit svar som var et korrekt svar på det indledende spørgsmål...

Hvad er det for noget kode du vil køre hvert minut? Mange typer kode behøver ikke blive kørt hvert minut, da men ofte kan finde en anden løsning...
Avatar billede repsak Nybegynder
18. oktober 2003 - 18:42 #7
jeg kender ham som kører serveren, så måske kan jeg lave noget der...

det er noget kode som kontrollerer at alle hans servere kører (måske kan det køres sjældrene, men det skal køres forholdsvist ofte)
Avatar billede nielslbeck Nybegynder
18. oktober 2003 - 23:43 #8
Okay... så er det fint med en Windows-service - og så kan du godt bruge:

Thread.CurrentThread.Suspend();
Avatar billede repsak Nybegynder
23. oktober 2003 - 10:02 #9
tror ikke jeg er helt med på hvad I mener med en Windows-service...?
Avatar billede arne_v Ekspert
23. oktober 2003 - 10:08 #10
En Windows service er et program som starter automatisk ved boot (eller
manuelt i servive managere eller manuelt med net start).
Avatar billede repsak Nybegynder
23. oktober 2003 - 14:52 #11
ok - men er det ikke til at lave en timer i asp.net miljø uden at lege med windowsservice?
Avatar billede odegaard Nybegynder
23. oktober 2003 - 15:12 #12
Du så jo selv hvad der skete. Du låser processen. Så jo det er muligt, men ikke anvendeligt.
Avatar billede repsak Nybegynder
23. oktober 2003 - 15:39 #13
ok det tolker jeg som at det ikke er praktisk muligt :-(
det lyder ellers underligt at det ikke kan gøres sådan
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester