-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

Thread.Sleep(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 に答える