النوم في حلقة عند تشغيل التطبيق ، لكنه ينام عددًا كبيرًا جدًا
-
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);
نرى هذا الخيط stackoverflow لمزيد من التفاصيل حول ذلك.
نصائح أخرى
حجة ينام الطريقة في ميلي ثانية ، لذلك إذا كنت تريد النوم لمدة 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 Seconds 10 دقائق سيكون الموضوع. seleep (1000 * 60 * 10)
لماذا تستخدم thread.sleep ، قد تكون أفضل باستخدام مؤقت
10 دقائق بالميلي ثانية 600000. سوف نومك ينتظر فقط 3.6 ثانية. غالبًا ما يكون أكثر وضوحًا لاستخدام فترات زمنية:
Thread.Sleep(new TimeSpan(0,10,0));
شكرا ، خطأي الكبير. John Feminella أنا أستخدم الموضوع الآن.
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);
}
}
شكرا للكل