Thread.Sleep メソッド

定義

指定した時間、現在のスレッドを中断します。

オーバーロード

名前 説明
Sleep(Int32)

指定したミリ秒単位で現在のスレッドを中断します。

Sleep(TimeSpan)

指定した時間、現在のスレッドを中断します。

Sleep(Int32)

ソース:
Thread.cs
ソース:
Thread.cs
ソース:
Thread.cs
ソース:
Thread.cs
ソース:
Thread.cs

指定したミリ秒単位で現在のスレッドを中断します。

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

スレッドが中断される時間 (ミリ秒)。 millisecondsTimeout引数の値が 0 の場合、スレッドはタイム スライスの残りの部分を、実行する準備ができている優先度が等しいスレッドに放棄します。 実行する準備ができている同じ優先度の他のスレッドがない場合、現在のスレッドの実行は中断されません。

例外

タイムアウト値は負の値であり、 Infiniteと等しくありません。

次の例では、 Sleep メソッドを使用して、アプリケーションのメイン スレッドをブロックします。

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.

注釈

スレッドは、指定された時間のオペレーティング システムによって実行されるようにスケジュールされません。 このメソッドは、 WaitSleepJoinを含むようにスレッドの状態を変更します。

Timeout.Infinite パラメーターにmillisecondsTimeoutを指定して、スレッドを無期限に中断することができます。 ただし、スレッドの同期やリソースの管理には、System.ThreadingMutexMonitorEventWaitHandleなどの他のSemaphore クラスを使用することをお勧めします。

システム クロックティックは、クロック解像度と呼ばれる特定のレートで刻まれます。 実際のタイムアウトは、指定されたタイムアウトがクロック ティックと一致するように調整されるため、正確には指定されたタイムアウトではない可能性があります。 クロック解像度と待機時間の詳細については、Windows システム API の Sleep 関数を参照してください。

このメソッドは、標準の COM および SendMessage ポンプを実行しません。

Note

STAThreadAttributeがあるスレッドでスリープ状態にする必要があるが、標準の COM および SendMessage ポンプを実行する場合は、タイムアウト間隔を指定する Join メソッドのいずれかのオーバーロードを使用することを検討してください。

適用対象

Sleep(TimeSpan)

ソース:
Thread.cs
ソース:
Thread.cs
ソース:
Thread.cs
ソース:
Thread.cs
ソース:
Thread.cs

指定した時間、現在のスレッドを中断します。

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

スレッドが中断される時間。 timeout引数の値がZero場合、スレッドはタイム スライスの残りの部分を、実行する準備ができている優先度が等しいスレッドに放棄します。 実行する準備ができている同じ優先度の他のスレッドがない場合、現在のスレッドの実行は中断されません。

例外

timeoutの値は負の値であり、ミリ秒単位のInfiniteと等しくないか、Int32.MaxValue ミリ秒より大きい値です。

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

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.

注釈

スレッドは、指定された時間のオペレーティング システムによって実行されるようにスケジュールされません。 このメソッドは、 WaitSleepJoinを含むようにスレッドの状態を変更します。

Timeout.InfiniteTimeSpan パラメーターにtimeoutを指定して、スレッドを無期限に中断することができます。 ただし、スレッドの同期やリソースの管理には、System.ThreadingMutexMonitorEventWaitHandleなどの他のSemaphore クラスを使用することをお勧めします。

この Sleep のオーバーロードでは、 timeoutのミリ秒全体の合計数が使用されます。 ミリ秒の小数部は破棄されます。

このメソッドは、標準の COM および SendMessage ポンプを実行しません。

Note

STAThreadAttributeがあるスレッドでスリープ状態にする必要があるが、標準の COM および SendMessage ポンプを実行する場合は、タイムアウト間隔を指定する Join メソッドのいずれかのオーバーロードを使用することを検討してください。

適用対象