Thread.Sleep Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Sospende il thread corrente per il periodo di tempo specificato.
Overload
Sleep(Int32) |
Sospende il thread corrente per il numero specificato di millisecondi. |
Sleep(TimeSpan) |
Sospende il thread corrente per il periodo di tempo specificato. |
Sleep(Int32)
- Origine:
- Thread.cs
- Origine:
- Thread.cs
- Origine:
- Thread.cs
Sospende il thread corrente per il numero specificato di millisecondi.
public:
static void Sleep(int millisecondsTimeout);
public static void Sleep (int millisecondsTimeout);
static member Sleep : int -> unit
Public Shared Sub Sleep (millisecondsTimeout As Integer)
Parametri
- millisecondsTimeout
- Int32
Numero di millisecondi per cui sospendere il thread. Se il valore dell'argomento millisecondsTimeout
è zero, il thread cede il periodo di tempo rimanente a un thread di uguale priorità pronto per l'esecuzione. Se non sono presenti altri thread di uguale priorità pronti per l'esecuzione, l'esecuzione del thread corrente non viene sospesa.
Eccezioni
Il valore di timeout è negativo e non è uguale a Infinite.
Esempio
Nell'esempio seguente viene usato il Sleep metodo per bloccare il thread principale dell'applicazione.
using namespace System;
using namespace System::Threading;
int main()
{
for (int i = 0; i < 5; i++)
{
Console::WriteLine("Sleep for 2 seconds.");
Thread::Sleep(2000);
}
Console::WriteLine("Main thread exits.");
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
using System;
using System.Threading;
class Example
{
static void Main()
{
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Sleep for 2 seconds.");
Thread.Sleep(2000);
}
Console.WriteLine("Main thread exits.");
}
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
open System.Threading
for _ = 0 to 4 do
printfn "Sleep for 2 seconds."
Thread.Sleep 2000
printfn "Main thread exits."
// This example produces the following output:
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Main thread exits.
Imports System.Threading
Class Example
Shared Sub Main()
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(2000)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.
Commenti
Il thread non verrà pianificato per l'esecuzione dal sistema operativo per il periodo di tempo specificato. Questo metodo modifica lo stato del thread in modo da includere WaitSleepJoin.
È possibile specificare Timeout.Infinite che il millisecondsTimeout
parametro sospende il thread per un periodo illimitato. È tuttavia consigliabile usare altre System.Threading classi, Mutexad esempio , Monitor, EventWaitHandleo Semaphore per sincronizzare i thread o gestire le risorse.
L'orologio di sistema si applica a una frequenza specifica denominata risoluzione dell'orologio. Il timeout effettivo potrebbe non essere esattamente il timeout specificato, perché il timeout specificato verrà modificato in modo da coincidere con i tick di clock. Per altre informazioni sulla risoluzione dell'orologio e sul tempo di attesa, vedere la funzione Sleep dalle API di sistema Windows.
Questo metodo non esegue la pompa COM e SendMessage standard.
Nota
Se è necessario dormire su un thread con STAThreadAttribute, ma si vuole eseguire il pumping COM e SendMessage standard, è consigliabile usare uno degli overload del Join metodo che specifica un intervallo di timeout.
Si applica a
Sleep(TimeSpan)
- Origine:
- Thread.cs
- Origine:
- Thread.cs
- Origine:
- Thread.cs
Sospende il thread corrente per il periodo di tempo specificato.
public:
static void Sleep(TimeSpan timeout);
public static void Sleep (TimeSpan timeout);
static member Sleep : TimeSpan -> unit
Public Shared Sub Sleep (timeout As TimeSpan)
Parametri
- timeout
- TimeSpan
Periodo di tempo per cui sospendere il thread. Se il valore dell'argomento timeout
è Zero, il thread cede il periodo di tempo rimanente a un thread di uguale priorità pronto per l'esecuzione. Se non sono presenti altri thread di uguale priorità pronti per l'esecuzione, l'esecuzione del thread corrente non viene sospesa.
Eccezioni
Il valore di timeout
è negativo e non è uguale a Infinite in millisecondi oppure è maggiore di Int32.MaxValue millisecondi.
Esempio
Nell'esempio seguente viene usato l'overload del Sleep(TimeSpan) metodo per bloccare il thread principale dell'applicazione cinque volte, per due secondi ogni volta.
using namespace System;
using namespace System::Threading;
int main()
{
TimeSpan interval = TimeSpan(0, 0, 2);
for (int i = 0; i < 5; i++)
{
Console::WriteLine("Sleep for 2 seconds.");
Thread::Sleep(interval);
}
Console::WriteLine("Main thread exits.");
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
using System;
using System.Threading;
class Example
{
static void Main()
{
TimeSpan interval = new TimeSpan(0, 0, 2);
for (int i = 0; i < 5; i++)
{
Console.WriteLine("Sleep for 2 seconds.");
Thread.Sleep(interval);
}
Console.WriteLine("Main thread exits.");
}
}
/* This example produces the following output:
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Sleep for 2 seconds.
Main thread exits.
*/
open System
open System.Threading
let interval = TimeSpan(0, 0, 2)
for _ = 0 to 4 do
printfn "Sleep for 2 seconds."
Thread.Sleep interval
printfn "Main thread exits."
// This example produces the following output:
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Sleep for 2 seconds.
// Main thread exits.
Imports System.Threading
Class Example
Shared Sub Main()
Dim interval As New TimeSpan(0, 0, 2)
For i As Integer = 0 To 4
Console.WriteLine("Sleep for 2 seconds.")
Thread.Sleep(interval)
Next
Console.WriteLine("Main thread exits.")
End Sub
End Class
' This example produces the following output:
'
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Sleep for 2 seconds.
'Main thread exits.
Commenti
Il thread non verrà pianificato per l'esecuzione dal sistema operativo per il periodo di tempo specificato. Questo metodo modifica lo stato del thread in modo da includere WaitSleepJoin.
È possibile specificare Timeout.InfiniteTimeSpan che il timeout
parametro sospende il thread per un periodo illimitato. È tuttavia consigliabile usare altre System.Threading classi, Mutexad esempio , Monitor, EventWaitHandleo Semaphore per sincronizzare i thread o gestire le risorse.
Questo overload di Sleep usa il numero totale di millisecondi interi in timeout
. I millisecondi frazionari vengono eliminati.
Questo metodo non esegue la pompa COM e SendMessage standard.
Nota
Se è necessario dormire su un thread con STAThreadAttribute, ma si vuole eseguire il pumping COM e SendMessage standard, è consigliabile usare uno degli overload del Join metodo che specifica un intervallo di timeout.