Frage

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

warum Thread.sleep nicht funktioniert. Ich erhalte Nachricht die ganze Zeit warten. Ich möchte, dass die Anwendung wird 10 Minuten warten, dann wieder fortgesetzt werden.

War es hilfreich?

Lösung

Thread.Sleep einen Wert in Millisekunden, nicht Sekunden, so sagt dies nur den aktuellen Thread 3,6 Sekunden zu warten. Wenn Sie wollen, 10 Minuten warten, zu verwenden:

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

Dies ist wahrscheinlich eine unangemessene Verwendung von Sleep, though. Betrachten Sie mit einem Timer statt, so dass Sie etwas entlang der Linien von:

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

Unter diesem Stackoverflow Thread für weitere Details über das.

Andere Tipps

Das Argument des Schlaf Methode in Millisekunden ist, so wenn Sie für 10 Minuten in den Schlaf wollen:

Thread.Sleep(10 * 60 * 1000);

3600 beträgt 3,6 Sekunden. Wenn Sie es zu schlafen für 10 Minuten wollen, sollten Sie es auf 600000 gesetzt.

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

Welche ist gleich:

Thread.Sleep(600000);

Thread.Sleep in Millisekunden ist 10 Minuten wären Thread.Sleep (1000 * 60 * 10)

Warum Sie Thread.Sleep verwenden, können Sie besser eine mit Timer

10 Minuten in Millisekunden beträgt 600.000. Ihr Schlaf wird warten nur 3,6 Sekunden. Es ist oft klarer eine Zeitspanne zu verwenden:

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

thx, mein großer Fehler. John Feminella i verwenden Thread jetzt.

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 all

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top