重复执行代码

时间:2012-04-06 08:49:37

标签: c#

我试图在预定义的时间过后重复代码执行,我不想通过使用线程搞砸事情。以下代码是一个好习惯吗?

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 个答案:

答案 0 :(得分:4)

使用计时器代替标签和StopWatch。您正在忙着等待,在紧密的循环中占用CPU。

启动一个计时器,给它一个间隔(100000毫秒),然后在Tick事件的事件处理程序中运行你的代码。

请参阅MSDN杂志中的Comparing the Timer Classes in the .NET Framework Class Library

答案 1 :(得分:2)

您可以使用Oded建议的计时器:

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)
    }
}

编辑:如果你不知道怎么做,只想告诉你如何制作一个简单的计时器:)