如何在c#中比较时间? 对于(int i=0;i

如何在c#中比较时间? 对于(int i=0;i,c#,time,comparison,C#,Time,Comparison,您需要一个参考开始日期和“现在”日期 if(startDate.addSeconds(5)

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

if(startDate.addSeconds(5)
如果我能很好地理解,情况可能是:

if(startDate.addSeconds(5) < DateTime.Now)  do something
DateTime startDate=DateTime.Now;
对于(inti=0;iThread.Sleep(5000);但这将阻止您的应用程序。您可以使用计时器

对于.NET4.5,您可以使用wait任务.Delay(5000)

我认为费利佩普做了一个很好的陈述

但是你给出的代码和问题的描述不一样

密码上写着,如果时间过去了

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

更新:

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

你想让它每五秒钟做同样的事情吗?签出这个链接:这将被重复11次:for(int i=0;我开玩笑吧?这没什么。我只想延迟5秒,但我找不到这个!!!我不必“做一些可能需要很长时间的事情”,我不需要做一些可能需要很长时间的事情,我想要的是真实的而不是这个。不是开玩笑,你能更准确地解释一下“这没什么”的说法吗?哦,好吧,你的问题是“我如何检查是否过了5秒?”我回答,但现在我很困惑,如果你需要“做点什么”要每5秒运行一次,这是非常不同的,请检查您问题的第二条注释。如果这些选项都没有用处,我将放弃,因为我无法破译您的问题。我正在使用Windows窗体应用程序。我尝试了:Thread.Sleep(5000);不工作!Task.Delay(5000);不工作!我如何使用计时器?(:您仍然可以在任务中使用Windows.Forms(需要Visual studio 2012)我有Visual studio 2012,这就是我所做的:做一些事情1;任务。延迟(5000);做一些事情2;但它没有延迟5秒,只是立即做了!我有Visual studio 2012,这就是我所做的:做一些事情1;任务。延迟(5000);做点什么2;但它没有延迟5秒,只是立即执行。因为Task.delay(5000)尚未执行,所以应该将Wait放在它前面。Wait Task.delay(5000);或Task.delay(5000)。Wait();(非阻塞/阻塞)版本
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
    }
}
    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.
    }