アプリケーションが実行されているときにループでスリープしますが、睡眠が少なすぎます

StackOverflow https://stackoverflow.com/questions/3075921

  •  28-09-2019
  •  | 
  •  

質問

private static void Main(string[] args)
{
    for (;;)
    {
        TemporaryCityTool.TemporaryCityTool.AddCity();
        Console.WriteLine("waiting...");
        Thread.Sleep(3600);
    }
}

どうして Thread.sleep 働いていない。私はいつもメッセージを待っています。そのアプリケーションが10分間待ってから再び続けることを望みます。

役に立ちましたか?

解決

Thread.Sleep 数秒ではなくミリ秒単位で値を取るので、これは現在のスレッドに3.6秒待つように指示するだけです。 10分待ちたい場合は、以下を使用してください。

Thread.Sleep(1000 * 60 * 10);  // 600,000 ms = 600 sec = 10 min

これはおそらく不適切な使用です Sleep, 、 けれど。代わりにタイマーを使用することを検討してください。そうすれば、次の行に沿って何かを取得するようにします。

// Fire SomeAction() every 10 minutes.
Timer timer = new Timer(o => SomeAction(), null, 10 * 60 * 1000, -1);

見る このスタックフロースレッド その詳細については。

他のヒント

の議論 睡眠 方法はミリ秒単位であるため、10分間眠りたい場合は:

Thread.Sleep(10 * 60 * 1000);

3600は3.6秒です。 10分間眠りたい場合は、600000に設定する必要があります。

Thread.Sleep(1000 * 60 * 10);  // Milliseconds(1000) * Seconds(60) * Minutes(10)

これは次のとおりです。

Thread.Sleep(600000);

Thrad.sleepはMilli秒です10分はthread.sleep(1000 * 60 * 10)になります

なぜスレッドを使用しているのですか。タイマーを使用する方が良いかもしれません

ミリ秒で10分は600,000です。睡眠は3.6秒しか待ちません。タイムスパンを使用することはしばしば明確です:

Thread.Sleep(new TimeSpan(0,10,0));

thx、私の大きな間違い。ジョン・フェミネラ私は今スレッドを使用しています。

private static void Main(string[] args)
        {
            Thread thrd1 = new Thread(new ThreadStart(Trmain));

            thrd1.Start();
        }

        private static void Trmain()
        {
            for (; ; )
            {
                Console.WriteLine("waiting 10 minutes...");
                Thread.Sleep(1000 * 60 * 10);
            }
        } 

thxすべて

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top