PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [c#] Sleep() alternative gesucht



cocacola
06.01.2009, 17:24
hallo zusammen!
kurz und knapp: ich suche eine alternative, zu der funktion sleep(), da sleep das gesammte programm bei mir aufhängt. hierbei möchte ich nicht auf einen timer zurückgreifen. hab die suche schon benutzt, aber nichts gescheites gefunden. bei google hab ich auch nichts passendes gesehen.
danke für eure hilfe
cocacola

k0rxxx
06.01.2009, 17:44
was spricht denn gegen timer?

blackberry
06.01.2009, 17:59
Pseudocode:

ZEIT Anfang = JETZT();
WHILE( (JETZT() - Anfang) < 20 Sekunden )
{
// MACH NICHTS
}
// 20 Sekunden geschlafen... mach was

cocacola
06.01.2009, 18:20
merci :) problem gelöst!

mo0wm
06.01.2009, 18:30
Bei Sleep () wird der ganze Prozess bzw. der ganze Thread "pausiert". Dadurch wird keine Rechenzeit während der Pause verbraucht.
Bei einer solche Schleife läuft die CPU (oder ein ganzer CPU-Kern) jedoch auf 100%, was ja nicht besonders effizient ist, insbesondere beim Arbeiten mit verschiedenen Threads ist das nicht empfehlenswert.

cocacola
06.01.2009, 18:48
gibts denn noch ne andere möglichkeit, welche nicht so viel rechenzeit verbraucht?

ir0n
06.01.2009, 19:02
Threads aka Backgroundworker.

Lg, Chris

Sirect
06.01.2009, 19:28
Stopwatch und Schleife.

cocacola
06.01.2009, 19:55
Stopwatch und Schleife.

kannste mir n beispiel geben? danke!

55F
07.01.2009, 14:16
Private Sub wait(ByVal interval As Integer)
Dim sw As New Stopwatch
sw.Start()
Do While sw.ElapsedMilliseconds < interval
Application.DoEvents()
Loop
sw.Stop()
End Sub

is zwar .NET aber solltest du hinbekommen...

Sawyer
07.01.2009, 14:18
Private Sub wait(ByVal interval As Integer)
Dim sw As New Stopwatch
sw.Start()
Do While sw.ElapsedMilliseconds < interval
Application.DoEvents()
Loop
sw.Stop()
End Sub

is zwar .NET aber solltest du hinbekommen...

C# ist auch .net :roll:

cocacola
07.01.2009, 17:00
FuDD hat Folgendes geschrieben:
Code:
Private Sub wait(ByVal interval As Integer)
Dim sw As New Stopwatch
sw.Start()
Do While sw.ElapsedMilliseconds < interval
Application.DoEvents()
Loop
sw.Stop()
End Sub


is zwar .NET aber solltest du hinbekommen...




klappt super, danke

55F
08.01.2009, 05:29
Private Sub wait(ByVal interval As Integer)
Dim sw As New Stopwatch
sw.Start()
Do While sw.ElapsedMilliseconds < interval
Application.DoEvents()
Loop
sw.Stop()
End Sub

is zwar .NET aber solltest du hinbekommen...

C# ist auch .net :roll:


ich meinte vb sry omg :shock: