Thread.Sleep メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した時間、現在のスレッドを中断します。
オーバーロード
| 名前 | 説明 |
|---|---|
| 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.Threading、Mutex、Monitor、EventWaitHandleなどの他の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.Threading、Mutex、Monitor、EventWaitHandleなどの他のSemaphore クラスを使用することをお勧めします。
この Sleep のオーバーロードでは、 timeoutのミリ秒全体の合計数が使用されます。 ミリ秒の小数部は破棄されます。
このメソッドは、標準の COM および SendMessage ポンプを実行しません。
Note
STAThreadAttributeがあるスレッドでスリープ状態にする必要があるが、標準の COM および SendMessage ポンプを実行する場合は、タイムアウト間隔を指定する Join メソッドのいずれかのオーバーロードを使用することを検討してください。