2010-06-19 10 views

Odpowiedz

14

Thread.Sleep przyjmuje wartość w milisekundach, a nie sekund, więc to tylko mówi c poproś o wątek, by poczekał 3,6 sekundy. Jeśli chcesz czekać 10 minut, należy:

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

Jest to prawdopodobnie niewłaściwe użycie Sleep, choć. Rozważyć użycie zamiast zegara, aby uzyskać coś na wzór:

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

Zobacz this StackOverflow thread więcej szczegółów na ten temat.

2

3600 trwa 3,6 sekundy. Jeśli chcesz spać przez 10 minut, należy ustawić go do 600000

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

która jest równa:

Thread.Sleep(600000); 
3

Argumentem metody Sleep jest w milisekundach, więc jeśli chcesz spać przez 10 minut:

Thread.Sleep(10 * 60 * 1000); 
1

thrad.sleep jest w milisekundach sekund 10 minut by być Thread.Sleep (1000 * 60 * 10)

Dlaczego używasz Thread.Sleep, może być lepiej przy użyciu czasomierza

0

10 minut w milisekundach to 600 000. Twój sen będzie czekać tylko 3,6 sekundy. Często jest bardziej przejrzyste użycie przedziału czasowego:

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

zgadzam, ale można zrobić to jeszcze wyraźniej przy użyciu statycznej metody fabryki „FromMinutes (10)” :) –

-1

thx, mój wielki błąd. John Feminella Używam teraz wątku.

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 wszystkim

+0

Należy przyjąć odpowiedź, że pomógł najbardziej klikając kleszcza następny do pytania. Powinieneś opublikować powyższe informacje jako edycję oryginalnego pytania. – GenericTypeTea

Powiązane problemy