アプリケーションが実行されているときにループでスリープしますが、睡眠が少なすぎます
-
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すべて
所属していません StackOverflow