Forum: PC-Programmierung Timer vs. Thread


von Benjamin S (Gast)


Lesenswert?

Hallo Leute,

bin gerade am Programmieren eines Programmes, welche folgende 
Funktionalität haben soll.

Ich habe ein Array mit 20 x 20 Werten. Der User muss 4 Punkte eingeben 
die 2 Geraden bilden (zB A(0,0), B(5,20), C(5,0), D(20,5)). Jeder Punkt 
der oberhalb er Geraden AB und und unterhalb der Geraden CD ist, kann 
vernachlässigt werden.

Soweit so gut.

Wenn ich nun zu einem Punkt komme der Valid ist, will ich eine 30 
sekündige Messung durchführen. Dann den Mittelwert des Messwertes bilden 
und speichern.
______________________________________________________________________ 
_

Am Anfang dachte ich mir, ich löse es mit 2 for schleifen. Wenn mein 
Punkt valid ist, führe ich ein TickEvent aus, indem jede Sekunde der 
Messwert gemessen wird.

Funktioniert leider nicht, da das TickEvent anscheinend in einer 
MessageLoop gespeichert wird und erst nach ablauf der beiden for 
schleifen ausgeführt wird.
______________________________________________________________________ 
__

Als nächstes habe ich es mit einer selbstgebauten StateMachine versucht.

case 0:
Punkt valid?
wenn ja
goto case2
sonst goto case1

case1:
...

case2:
Timer1 timer= new Timer();
timer.Interval = 1000;
timer.Start();
timer.Tick += newEventHandler(timer_tick);

wenn aktuelleAnzahlMesspunkte < 400
goto case0
sonst
default;

Funktioniert zwar besser, jedoch wird das TickEvent nur alle 1000ms 
aufgerufen.

Es ist zwar dass was ich programmiert habe, jedoch will ich ja, dass er 
anhält im case2 und 30 Sekunden lang misst, indem er jede Sekunde das 
TickEvent aufruft.


Hat jemand eine Idee das zu realisieren bzw. eine Anregung was bei mir 
falsch ist.??

thx im Vorraus

von stefan (Gast)


Lesenswert?

Lass im Timer einen Zähler mitlaufen und wenn er bei 30 is, beendest du 
den Timer.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.