Avatar billede kxh Nybegynder
29. november 2005 - 14:11 Der er 8 kommentarer og
1 løsning

Opret en timer i koden

Hej

Jeg har lavet en class, jeg vil i classen gerne have en timerfunktioner, men hvordan programmere jeg den ?
er lidt inde på følgende kode, men kan kun få timeren til køre 10 gangen så stopper den

TimerCallback timerDelegate = new TimerCallback(Timer_TICK);
Timer mTimer = new Timer(timerDelegate, null, 0, 2000);


// Kim
Avatar billede nielle Nybegynder
29. november 2005 - 20:43 #1
F.eks. sådan:

private void Form1_Load(object sender, System.EventArgs e)
{
    Timer t = new Timer();
    t.Interval = 2000;
    t.Tick += new EventHandler(Timer_TICK);
    t.Start();
}

private static void Timer_TICK(object sender, EventArgs e)
{
    MessageBox.Show("Timer_TICK");
}
Avatar billede kxh Nybegynder
30. november 2005 - 07:51 #2
Hej Nielle

jeg får følgende fejl....
Error    6    'System.Timers.Timer' does not contain a definition for 'Tick'

Er der evt. sket en ændring fra C#2003 til C#2005 ?
Avatar billede nielle Nybegynder
30. november 2005 - 17:48 #3
Nu har jeg testet efter i 1.1 og i 2.0 og koden virker i begge tilfælde. Jeg ville nu også være blevet forbavset hvis den ikke gjorde.

Imidlertid kan jeg se at du brugere en anden Timer-klasse end den jeg bruger. Min er:

System.Windows.Forms.Timer

Hvilken type applikation er du ved at udvikle? En DLL, en Windows-app, en web-app, eller måske en console-app?
Avatar billede kxh Nybegynder
01. december 2005 - 07:45 #4
Hej

Ja du har ret jeg brugte den forkerte klasse, jeg er ved at udvikle en dll, som skal kaldes af en windows service

// Kim
Avatar billede nielle Nybegynder
01. december 2005 - 12:57 #5
Jeg har længe undret mig over at Microsoft har flere klasser med stort set samme funktionalitet spredt ud over deres .Net framework.

Timer er altså et eksempel på dette; Jeg ved ikke om man kan sige at det er en "forkert" Timer-klasse du har brugt. Denne kode fungere fint med System.Timers.Timer:

using System;
using System.Timers;

namespace ConsoleApplication3
{
    class Class1
    {
        [STAThread]
        static void Main(string[] args)
        {
            Timer mTimer = new Timer();
            mTimer.Elapsed += new ElapsedEventHandler(Timer_TICK);
            mTimer.Enabled = true;
            mTimer.Interval = 2000;
            mTimer.Start();

            while (Console.Read() != 'q');
        }

        private static void Timer_TICK(object source, ElapsedEventArgs e)
        {
            Console.WriteLine("Timer_TICK kaldt");
        }
    }
}
Avatar billede kxh Nybegynder
01. december 2005 - 13:36 #6
Hej Nielle

Ja det er for at forvirre folk ;-)
jeg takker for din hjælp jeg har brugt dit forslag, ved du evt. hvilket
der er bedst med hensyn på belastning af cpu.

// Kim
Avatar billede nielle Nybegynder
01. december 2005 - 15:15 #7
Jeg tvivler alvorligt på at nogen af dem belaster CPU'en nævneværdigt - specielt hvis de kun køres med 2 sekunders-intervaller som i den angivne kode.
Avatar billede kxh Nybegynder
01. december 2005 - 15:24 #8
Ok

Smid et svar så du kan får nogen points ;-)
Avatar billede nielle Nybegynder
01. december 2005 - 17:25 #9
Svar :^)
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