Thread.Sleep Metodo

Definizione

Sospende il thread corrente per il periodo di tempo specificato.Suspends the current thread for the specified amount of time.

Overload

Sleep(Int32)

Sospende il thread corrente per il numero specificato di millisecondi.Suspends the current thread for the specified number of milliseconds.

Sleep(TimeSpan)

Sospende il thread corrente per il periodo di tempo specificato.Suspends the current thread for the specified amount of time.

Sleep(Int32)

Sospende il thread corrente per il numero specificato di millisecondi.Suspends the current thread for the specified number of milliseconds.

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.The number of milliseconds for which the thread is suspended. 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.If the value of the millisecondsTimeout argument is zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Se non sono presenti altri thread di uguale priorità pronti per l'esecuzione, l'esecuzione del thread corrente non viene sospesa.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Eccezioni

Il valore di timeout è negativo e non è uguale a Infinite.The time-out value is negative and is not equal to Infinite.

Esempi

Nell'esempio seguente viene usato il metodo Sleep per bloccare il thread principale dell'applicazione.The following example uses the Sleep method to block the application's main thread.

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.
 */
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 da parte del sistema operativo per il periodo di tempo specificato.The thread will not be scheduled for execution by the operating system for the amount of time specified. Questo metodo modifica lo stato del thread in modo da includere WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

È possibile specificare Timeout.Infinite per il parametro millisecondsTimeout per sospendere il thread per un periodo illimitato.You can specify Timeout.Infinite for the millisecondsTimeout parameter to suspend the thread indefinitely. È tuttavia consigliabile usare altre classi System.Threading, ad esempio Mutex, Monitor, EventWaitHandle o Semaphore per sincronizzare i thread o gestire le risorse.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Il clock di sistema viene tick a una frequenza specifica denominata risoluzione dell'orologio.The system clock ticks at a specific rate called the clock resolution. Il timeout effettivo potrebbe non corrispondere esattamente al timeout specificato, perché il timeout specificato verrà regolato in modo da coincidere con i tick del clock.The actual timeout might not be exactly the specified timeout, because the specified timeout will be adjusted to coincide with clock ticks. Per ulteriori informazioni sulla risoluzione del clock e sul tempo di attesa, vedere l'argomento relativo alla funzione Sleep .For more information on clock resolution and the waiting time, see the Sleep function topic. Questo metodo chiama la funzione Sleep dalle API di sistema di Windows.This method calls the Sleep function from the Windows system APIs.

Questo metodo non esegue la distribuzione standard di COM e SendMessage.This method does not perform standard COM and SendMessage pumping.

Nota

Se è necessario sospendere un thread con STAThreadAttribute, ma si vuole eseguire la distribuzione standard di COM e SendMessage, provare a usare uno degli overload del metodo Join che specifica un intervallo di timeout.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Sleep(TimeSpan)

Sospende il thread corrente per il periodo di tempo specificato.Suspends the current thread for the specified amount of time.

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.The amount of time for which the thread is suspended. 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.If the value of the millisecondsTimeout argument is Zero, the thread relinquishes the remainder of its time slice to any thread of equal priority that is ready to run. Se non sono presenti altri thread di uguale priorità pronti per l'esecuzione, l'esecuzione del thread corrente non viene sospesa.If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

Eccezioni

Il valore di timeout è negativo e non è uguale a Infinite in millisecondi oppure è maggiore di MaxValue in millisecondi.The value of timeout is negative and is not equal to Infinite in milliseconds, or is greater than MaxValue milliseconds.

Esempi

Nell'esempio seguente viene usato l'overload del metodo Sleep(TimeSpan) per bloccare il thread principale dell'applicazione cinque volte, per due secondi ogni volta.The following example uses the Sleep(TimeSpan) method overload to block the application's main thread five times, for two seconds each time.

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.
 */
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 da parte del sistema operativo per il periodo di tempo specificato.The thread will not be scheduled for execution by the operating system for the amount of time specified. Questo metodo modifica lo stato del thread in modo da includere WaitSleepJoin.This method changes the state of the thread to include WaitSleepJoin.

È possibile specificare Timeout.InfiniteTimeSpan per il parametro timeout per sospendere il thread per un periodo illimitato.You can specify Timeout.InfiniteTimeSpan for the timeout parameter to suspend the thread indefinitely. È tuttavia consigliabile usare altre classi System.Threading, ad esempio Mutex, Monitor, EventWaitHandle o Semaphore per sincronizzare i thread o gestire le risorse.However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Questo overload di Sleep usa il numero totale di millisecondi interi in timeout.This overload of Sleep uses the total number of whole milliseconds in timeout. I millisecondi frazionari vengono eliminati.Fractional milliseconds are discarded.

Questo metodo non esegue la distribuzione standard di COM e SendMessage.This method does not perform standard COM and SendMessage pumping.

Nota

Se è necessario sospendere un thread con STAThreadAttribute, ma si vuole eseguire la distribuzione standard di COM e SendMessage, provare a usare uno degli overload del metodo Join che specifica un intervallo di timeout.If you need to sleep on a thread that has STAThreadAttribute, but you want to perform standard COM and SendMessage pumping, consider using one of the overloads of the Join method that specifies a timeout interval.

Si applica a