Thread.Sleep メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した時間の長さにわたって現在のスレッドを中断します。
オーバーロード
Sleep(Int32) |
指定したミリ秒数の間現在のスレッドを中断します。 |
Sleep(TimeSpan) |
指定した時間の長さにわたって現在のスレッドを中断します。 |
Sleep(Int32)
- ソース:
- 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 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.
*/
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むようにスレッドの状態を変更します。
パラメーターに、スレッドをmillisecondsTimeout
無期限に中断するように 指定Timeout.Infiniteできます。 ただし、スレッドの同期やリソースの管理には、代わりに 、Monitor、EventWaitHandle、 Semaphore などのMutex他System.Threadingのクラスを使用することをお勧めします。
システム クロックは、クロック解像度と呼ばれる特定のレートでティックします。 実際のタイムアウトは、指定したタイムアウトがクロック ティックと一致するように調整されるため、正確には指定されたタイムアウトではない可能性があります。 クロック解像度と待機時間の詳細については、「Windows システム API からの Sleep 関数 」を参照してください。
このメソッドは、標準の COM および SendMessage ポンプを実行しません。
Note
を含むスレッドでスリープ状態にする必要があるが、標準の COM および SendMessage ポンプを実行する場合は STAThreadAttribute、タイムアウト間隔を指定する メソッドのいずれかのオーバーロードを Join 使用することを検討してください。
適用対象
Sleep(TimeSpan)
- ソース:
- 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 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.
*/
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
無期限に中断するように 指定Timeout.InfiniteTimeSpanできます。 ただし、スレッドの同期やリソースの管理には、代わりに 、Monitor、EventWaitHandle、 Semaphore などのMutex他System.Threadingのクラスを使用することをお勧めします。
のこのオーバーロード Sleep では、 のミリ秒全体の合計数が使用されます timeout
。 ミリ秒の小数部は破棄されます。
このメソッドは、標準の COM および SendMessage ポンプを実行しません。
Note
を含むスレッドでスリープ状態にする必要があるが、標準の COM および SendMessage ポンプを実行する場合は STAThreadAttribute、タイムアウト間隔を指定する メソッドのいずれかのオーバーロードを Join 使用することを検討してください。
適用対象
.NET