我试图在预定义的时间过后重复代码执行,我不想通过使用线程搞砸事情。以下代码是一个好习惯吗?
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;
答案 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)
}
}
编辑:如果你不知道怎么做,只想告诉你如何制作一个简单的计时器:)