2012-04-06 18 views
0

Ich versuche, eine Codeausführung nach vordefinierter Zeit zu wiederholen, und ich möchte nicht Dinge mit Threads versauen. Ist der folgende Code eine gute Vorgehensweise?Wiederholen einer Codeausführung

Stopwatch sw = new Stopwatch(); // sw constructor 
EXIT: 
    // Here I have my code 
    sw.Start(); 
    while (sw.ElapsedMilliseconds < 100000) 
    { 
     // do nothing, just wait 
    } 

    System.Media.SystemSounds.Beep.Play(); // for test 
    sw.Stop(); 
    goto EXIT; 
+2

Gutes Beispiel für schlecht :) Praktiken ;) – sll

Antwort

2

Sie können einen Timer verwenden, was Oded vorgeschlagen:

public partial class TestTimerClass : Form 
{ 
    Timer timer1 = new Timer(); // Make the timer available for this class. 
    public TestTimerClass() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     timer1.Tick += timer1_Tick; // Assign the tick event 
     timer1.Interval = 1000; // Set the interval of the timer in ms (1000 ms = 1 sec) 
     timer1.Start(); // Start the timer 
    } 

    void timer1_Tick(object sender, EventArgs e) 
    { 
     System.Media.SystemSounds.Beep.Play(); 
     timer1.Stop(); // Stop the timer (remove this if you want to loop the timer) 
    } 
} 

EDIT: Ich will nur zeigen, wie eine einfache Timer machen, wenn Sie nicht wissen, wie

4

einen Timer anstelle von Etiketten verwenden und StopWatch. Sie arbeiten beschäftigt warten, binden die CPU in dieser engen Schleife.

Sie starten einen Timer, indem Sie ihm ein Intervall zum Aktivieren geben (100000 Millisekunden), und führen Sie dann den Code im Ereignishandler für das Ereignis Tick aus.

Siehe Comparing the Timer Classes in the .NET Framework Class Library im MSDN-Magazin.

Verwandte Themen