-1
        for (int i = 0; i <= 10; i++)
        {
            if (5 seconds have passed)
            {
                do something;
            }
        }

如何检查是否已过 5 秒?例如,如果 5 秒过去了,它会“做某事”,如果再过 5 秒,它就会再次做同样的事情,以此类推。

重要的是:如果我应该使用日期和时间来做,它不应该是一个特定的时间,它应该是自动的。

4

2 回答 2

1

您需要一个参考开始日期和一个“现在”日期;

if(startDate.addSeconds(5) < DateTime.Now)  do something

如果我理解得很好,情况可能是这样的:

DateTime startDate = DateTime.Now;

for (int i = 0; i <= 10; i++)
{
    //do something that can take a long time
    //...
    //..

    if(startDate.addSeconds(5) < DateTime.Now) //5 seconds have passed
    {
        //do something else
    }
}
于 2013-08-24T22:03:10.980 回答
0

线程.睡眠(5000);但这会阻止您的应用程序。你可以使用定时器。

对于 .NET 4.5,您可以使用await Task.Delay(5000);

我认为 FelipeP 做了一个很棒的声明。

但是您提供的代码和问题的描述不一样。

代码说,如果时间过去了。

您的描述说循环必须等到时间过去。

更新:

    System.Windows.Forms.Timer _timer = new System.Windows.Forms.Timer();

    void CreateTimer()
    {
        _timer = new System.Windows.Forms.Timer();
        _timer.Tick += new EventHandler(_timer_Tick);
        _timer.Interval = 5000;
        _timer.Enabled = true;
    }

    void _timer_Tick(object sender, EventArgs e)
    {
        // do something.
    }
于 2013-08-24T22:08:14.313 回答