This documentation is archived and is not being maintained.

Thread.Sleep Method (Int32)

.NET Framework 1.1

Suspends the current thread for a specified time.

[Visual Basic]
Overloads Public Shared Sub Sleep( _
   ByVal millisecondsTimeout As Integer _
)
[C#]
public static void Sleep(
 int millisecondsTimeout
);
[C++]
public: static void Sleep(
 int millisecondsTimeout
);
[JScript]
public static function Sleep(
   millisecondsTimeout : int
);

Parameters

millisecondsTimeout
The number of milliseconds for which the thread is blocked. Specify zero (0) to indicate that this thread should be suspended to allow other waiting threads to execute. Specify Infinite to block the thread indefinitely.

Exceptions

Exception Type Condition
ArgumentOutOfRangeException The time-out value is negative and is not equal to Infinite.

Remarks

The thread will not be scheduled for execution by the operating system for the amount of time specified. This method changes the state of the thread to include WaitSleepJoin.

Example

[Visual Basic, C#, C++] The following code example demonstrates a sleeping thread.

[Visual Basic] 
Imports Microsoft.VisualBasic
Imports System
Imports System.Threading

Public Class ApartmentTest

    Shared Sub Main()
    
        Dim newThread As Thread = New Thread(AddressOf ThreadMethod)
        newThread.ApartmentState = ApartmentState.MTA

        ' The following line is ignored since 
        ' ApartmentState can only be set once.
        newThread.ApartmentState = ApartmentState.STA

        Console.WriteLine("ThreadState: {0}, ApartmentState: {1}", _
            newThread.ThreadState, newThread.ApartmentState)

        newThread.Start()

        ' Wait for newThread to start and go to sleep.
        Thread.Sleep(300)
        Try
            ' This causes an exception since newThread is sleeping.
            newThread.ApartmentState = ApartmentState.STA
        Catch stateException As ThreadStateException
            Console.WriteLine(vbCrLf & "{0} caught:" & vbCrLf & _
                "Thread is not In the Unstarted or Running state.", _
                stateException.GetType().Name)
            Console.WriteLine("ThreadState: {0}, ApartmentState: " & _
                "{1}", newThread.ThreadState, newThread.ApartmentState)
        End Try

    End Sub

    Shared Sub ThreadMethod()
        Thread.Sleep(1000)
    End Sub

End Class

[C#] 
using System;
using System.Threading;

class ApartmentTest
{
    static void Main()
    {
        Thread newThread = 
            new Thread(new ThreadStart(ThreadMethod));
        newThread.ApartmentState = ApartmentState.MTA;

        // The following line is ignored since 
        // ApartmentState can only be set once.
        newThread.ApartmentState = ApartmentState.STA;

        Console.WriteLine("ThreadState: {0}, ApartmentState: {1}", 
            newThread.ThreadState, newThread.ApartmentState);

        newThread.Start();

        // Wait for newThread to start and go to sleep.
        Thread.Sleep(300);
        try
        {
            // This causes an exception since newThread is sleeping.
            newThread.ApartmentState = ApartmentState.STA;
        }
        catch(ThreadStateException stateException)
        {
            Console.WriteLine("\n{0} caught:\n" +
                "Thread is not in the Unstarted or Running state.", 
                stateException.GetType().Name);
            Console.WriteLine("ThreadState: {0}, ApartmentState: {1}",
                newThread.ThreadState, newThread.ApartmentState);
        }
    }

    static void ThreadMethod()
    {
        Thread.Sleep(1000);
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Threading;

__gc class ApartmentTest
{
public :
    static void ThreadMethod()
    {
        Thread::Sleep(1000);
    }
};

void main()
{
    Thread* newThread = 
        new Thread(new ThreadStart(0, &ApartmentTest::ThreadMethod));
        newThread->ApartmentState = ApartmentState::MTA;

        // The following line is ignored since 
        // ApartmentState can only be set once.
        newThread->ApartmentState = ApartmentState::STA;

        Console::WriteLine(S"ThreadState: {0}, ApartmentState: {1}", 
            __box(newThread->ThreadState)->ToString(),
            __box(newThread->ApartmentState)->ToString());

    newThread->Start();

    // Wait for newThread to start and go to sleep.
    Thread::Sleep(300);
    try
    {
        // This causes an exception since newThread is sleeping.
        newThread->ApartmentState = ApartmentState::STA;
    }
    catch(ThreadStateException* stateException)
    {
        Console::WriteLine(S"\n{0} caught:\n"
            S"Thread is not in the Unstarted or Running state.",
            stateException->GetType()->Name);
        Console::WriteLine(S"ThreadState: {0}, ApartmentState: {1}", 
            __box(newThread->ThreadState)->ToString(),
            __box(newThread->ApartmentState)->ToString());
    }
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

See Also

Thread Class | Thread Members | System.Threading Namespace | Thread.Sleep Overload List

Show: