النوم في حلقة عند تشغيل التطبيق ، لكنه ينام عددًا كبيرًا جدًا

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);

نرى هذا الخيط 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);
            }
        } 

شكرا للكل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top