Thread.Sleep Thread.Sleep Thread.Sleep Thread.Sleep Method

定義

指定した時間の長さにわたって現在のスレッドを中断します。Suspends the current thread for the specified amount of time.

オーバーロード

Sleep(Int32) Sleep(Int32) Sleep(Int32) Sleep(Int32)

指定したミリ秒数の間現在のスレッドを中断します。Suspends the current thread for the specified number of milliseconds.

Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan)

指定した時間の長さにわたって現在のスレッドを中断します。Suspends the current thread for the specified amount of time.

Sleep(Int32) Sleep(Int32) Sleep(Int32) Sleep(Int32)

指定したミリ秒数の間現在のスレッドを中断します。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)

パラメーター

millisecondsTimeout
Int32 Int32 Int32 Int32

スレッドが中断ブロックされるミリ秒数。The number of milliseconds for which the thread is suspended. millisecondsTimeout 引数の値が 0 である場合は、スレッドは自らのタイム スライスの残りの部分を放棄し、実行する準備ができている同じ優先順位の他のスレッドに渡します。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. 優先順位が同じで実行する準備ができている他のスレッドが存在しない場合は、現在のスレッドの実行は中断されません。If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

例外

タイムアウト値が負の値で、Infinite に等しくありません。The time-out value is negative and is not equal to Infinite.

次の例ではSleep 、メソッドを使用して、アプリケーションのメインスレッドをブロックします。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.

注釈

スレッドは、指定された時間だけオペレーティングシステムによって実行されるようにスケジュールされません。The thread will not be scheduled for execution by the operating system for the amount of time specified. このメソッドは、含まWaitSleepJoinれるスレッドの状態を変更します。This method changes the state of the thread to include WaitSleepJoin.

パラメーターにをTimeout.Infinite指定して、スレッドを無期限に中断することができます。 millisecondsTimeoutYou can specify Timeout.Infinite for the millisecondsTimeout parameter to suspend the thread indefinitely. ただし、スレッドを同期したりリソースSystem.Threadingを管理したりするにはSemaphore Mutex、代わりに、 Monitor EventWaitHandle、、、などの他のクラスを使用することをお勧めします。However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

クロック解像度と呼ばれる特定の速度でのシステムクロックティック。The system clock ticks at a specific rate called the clock resolution. 指定されたタイムアウトはクロックティックと一致するように調整されるので、実際のタイムアウトは指定したタイムアウト値にならない可能性があります。The actual timeout might not be exactly the specified timeout, because the specified timeout will be adjusted to coincide with clock ticks. クロック解像度と待機時間の詳細については、「 Sleep 関数」を参照してください。For more information on clock resolution and the waiting time, see the Sleep function topic. このメソッドは、Windows システム Api からスリープ関数を呼び出します。This method calls the Sleep function from the Windows system APIs.

このメソッドでは、標準の COM および SendMessage ポンプは実行されません。This method does not perform standard COM and SendMessage pumping.

注意

を持つSTAThreadAttributeスレッドでスリープする必要があり、標準の COM および SendMessage ポンプを実行する必要がある場合は、タイムアウト間隔を指定するJoinメソッドのオーバーロードの1つを使用することを検討してください。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) Sleep(TimeSpan) Sleep(TimeSpan) Sleep(TimeSpan)

指定した時間の長さにわたって現在のスレッドを中断します。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)

パラメーター

timeout
TimeSpan TimeSpan TimeSpan TimeSpan

スレッドが中断される時間の長さ。The amount of time for which the thread is suspended. millisecondsTimeout 引数の値が Zero である場合は、スレッドは自らのタイム スライスの残りの部分を放棄し、実行する準備ができている同じ優先順位の他のスレッドに渡します。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. 優先順位が同じで実行する準備ができている他のスレッドが存在しない場合は、現在のスレッドの実行は中断されません。If there are no other threads of equal priority that are ready to run, execution of the current thread is not suspended.

例外

timeout の値が負の値で、Infinite (ミリ秒単位) と等しくないか、または MaxValue ミリ秒を超えています。The value of timeout is negative and is not equal to Infinite in milliseconds, or is greater than MaxValue milliseconds.

次の例ではSleep(TimeSpan) 、メソッドオーバーロードを使用して、2秒間、アプリケーションのメインスレッドを5回ブロックします。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.

注釈

スレッドは、指定された時間だけオペレーティングシステムによって実行されるようにスケジュールされません。The thread will not be scheduled for execution by the operating system for the amount of time specified. このメソッドは、含まWaitSleepJoinれるスレッドの状態を変更します。This method changes the state of the thread to include WaitSleepJoin.

パラメーターにをTimeout.InfiniteTimeSpan指定して、スレッドを無期限に中断することができます。 timeoutYou can specify Timeout.InfiniteTimeSpan for the timeout parameter to suspend the thread indefinitely. ただし、スレッドを同期したりリソースSystem.Threadingを管理したりするにはSemaphore Mutex、代わりに、 Monitor EventWaitHandle、、、などの他のクラスを使用することをお勧めします。However, we recommend that you use other System.Threading classes such as Mutex, Monitor, EventWaitHandle, or Semaphore instead to synchronize threads or manage resources.

Sleepこのオーバーロードでは、の全体のtimeoutミリ秒数を使用します。This overload of Sleep uses the total number of whole milliseconds in timeout. ミリ秒の小数部は破棄されます。Fractional milliseconds are discarded.

このメソッドでは、標準の COM および SendMessage ポンプは実行されません。This method does not perform standard COM and SendMessage pumping.

注意

を持つSTAThreadAttributeスレッドでスリープする必要があり、標準の COM および SendMessage ポンプを実行する必要がある場合は、タイムアウト間隔を指定するJoinメソッドのオーバーロードの1つを使用することを検討してください。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.

適用対象