Thread.Sleep メソッド

定義

指定した時間の長さにわたって現在のスレッドを中断します。

オーバーロード

Sleep(Int32)

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

Sleep(TimeSpan)

指定した時間の長さにわたって現在のスレッドを中断します。

Sleep(Int32)

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

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 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.

注釈

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

パラメーターでスレッドをmillisecondsTimeout無期限に中断するように指定Timeout.Infiniteできます。 ただし、スレッドの同期やSemaphoreリソースの管理には、他のクラス Mutex(Monitor、、EventWaitHandle、) を使用System.Threadingすることをお勧めします。

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

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

注意

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

適用対象

Sleep(TimeSpan)

指定した時間の長さにわたって現在のスレッドを中断します。

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 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.

注釈

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

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

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

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

注意

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

適用対象