考虑到这是我的代码:
public void alarmClockTick()
{
while(true){
foreach(Alarm alarm in objectCollection){
//Do some actions
}
Thread.Sleep(1000);
}
}
如果我们假设for循环执行一些可能需要几毫秒的动作,我怎样才能确保线程循环在1秒后循环?我目前正在制作一个闹钟,我希望能够精确地处理这部分代码。
我考虑过测量循环所需的时间,然后计算我们需要等待的时间,但是,时间测量还需要一些时间吗?
我该如何解决这个问题?
答案 0 :(得分:0)
我采取了疯狂的猜测,并假设你想要做的更像是这样的事情。该代码可以很容易地用于“闹钟功能”
创建一个Windows窗体并添加一个名为button1的Button和一个名为label1的标签
public partial class Form1 : Form
{
private Timer _timer;
public Form1()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_timer = new Timer();
_timer.Interval = 10;
_timer.Tick += _updateLabel();
}
private void _updateLabel()
{
label1.Text = (DateTime.Now - _start).ToString();
}
DateTime _start;
private void button1_Click(object sender, EventArgs e)
{
if (!_timer.Enabled)
{
_start = DateTime.Now;
_timer.Start();
}
else _timer.Stop();
_updateLabel();
}
}