Forum: PC-Programmierung CSharp: Timer


von csharp_anwender (Gast)


Lesenswert?

Hallo,

in einer C# Anwendung wird ein Timer benutzt der im Intervall von 1 
Sekunde läuft. In der Timer Funktion wird zur Verzögerung 
Thread.Sleep(20) verwendet. Hier wird erreicht das erst nach 20ms 
weitergemacht wird. Gibt es eine andere Möglichkeit dies zu realisieren? 
In einer Timer Funktion die Funktion Thread.Sleep zu benutzen scheint 
mir nicht der beste Weg zu sein.

von Peter II (Gast)


Lesenswert?

csharp_anwender schrieb:
> Gibt es eine andere Möglichkeit dies zu realisieren?

selber ein Thread starten und dort warten.

von csharp_anwender (Gast)


Lesenswert?

Im Prinzip ist dies dann das gleiche oder? Ob ich die Sleep Methode 
nehme bzw. einen eigenen Thread erzeuge mit einer Sleep Funktionalität.

Würde dies auch ohne Thread funktionieren?

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

csharp_anwender schrieb:
> Hallo,
>
> in einer C# Anwendung wird ein Timer benutzt der im Intervall von 1
> Sekunde läuft. In der Timer Funktion wird zur Verzögerung
> Thread.Sleep(20) verwendet. Hier wird erreicht das erst nach 20ms
> weitergemacht wird.
Wieso machst du das? Ich kann da keinen Sinn drin sehen.
Aber wie auch immer. Was ist so schlimm daran? Das sleep endet ja nicht 
in einer Schleife die aktiv wartet, sondern in der Zeit kommen einfach 
andere Prozesse dran.
Es wird nur schlimm, wenn etwas anderes auf deinen Timer wartet, aber 
dann ist der Loesungsansatz schon daneben.

Lg
Christopher

von Timer (Gast)


Lesenswert?

Was spricht dagegen einen zweiten Timer zu starten?

von fgfg (Gast)


Lesenswert?

Thread t = new Thread(this.DoWork)
t.Start();

void DoWork()
{
 while(true)
 {
  Sleep(1000);
  int i = 3+5;
  Sleep(20);
  Console.WriteLine("i is {0},i);
 }
}

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.