Avatar billede postbil Nybegynder
21. april 2013 - 20:55 Der er 2 kommentarer

Timer i C#

Hejsa Eksperden.dk

Er der nogen af jer der ved noget om timere i C#?
Jeg sidder og arbejder på en methode der har til op gave at overvåge om en motor er startet efter en given tid.

1.Der kommer et signal (boolsk variabel). En timer startes.
2.Hvis der ikke kommer signal (Boolsk variabel) om at motoren køre efter 10s. Sættes en boolsk variabel høj som tegn på  fejl. 

Jeg har selv arbejdet på en methode. Men kan ikke få den til at virke efter hensigten kan nogen hjælpe ?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;

namespace test3
{
    public class timeOut
    {
        public bool timeOutFail { get; set; }
        public bool DI_Running { get; set; }
        public bool CMD_VLT_Run { get; set; }
        int timeOutTime = 10;
        int timeOutSeq;
        Timer timer = new Timer();
       
        public void TimeOut()
        {
            switch (timeOutSeq)
            {
                case 1: // Initalisering
                    timer.Stop();
                    goto case 2;

                case 2: // forsøgt startet start timer
                    if (CMD_VLT_Run)
                    {
                        timer.Enabled = true;
                        timer.Start();
                        timer.Interval = 1000 * timeOutTime;
                        timer.Elapsed -= new ElapsedEventHandler(timerOn);
                    }
                    goto case 3;

                case 3:// Chek for timeout eller DI_Running
                    if (DI_Running)
                    {
                        break;
                    }
                    else if (timeOutFail)
                    {
                        break;
                    }
                    break;
            }
        }

            public void timerOn(object sender, ElapsedEventArgs e)
        {
            timeOutFail = true;
        }
       
    }
       
}


Jeg håber nogen kan hjælpe!!
Hilsen Mik Christensen
Avatar billede janus_007 Nybegynder
21. april 2013 - 22:32 #1
Jeg forstår ikke helt din klasse, udover den virker forkert. Du bruger nogle properties som skal sættes fra din kaldende klasse, det er umiddelbart lidt underligt. Og så noget med en goto case 2 fra case 1, det vidner om noget rod og svært at vedligeholde og forstå efterfølgende.

Må jeg istedet foreslå dig at lave en klasse som tager en reference til din motor.

noget ala:
Engine _engine;
Timer _timer;
public CheckForRunningEngine(Engine engine)
{
_engine = engine;
}
void StartMonitoring()
{
_timer.Elapsed +=
_timer.Start;
}

osv...
Avatar billede MADOlsen Forsker
22. april 2013 - 09:42 #2
Enig med #1.

Og derudover vil jeg da lige opfordre dig til, at tage et kig på dine åbne spørgsmål. Det er faktisk endnu ikke lykkedes dig at lukke et eneste, og halvdelen af dem har du ikke engang deltaget i, efter at have stillet dem.

Det øger jo ikke ligefrem folks lyst til at hjælpe dig.
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

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