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
引數的值為零,則執行緒會將其剩餘的時間配量讓與準備好要執行的任何同等優先權執行緒。 如果沒有其他準備好要執行的同等優先權執行緒,則目前執行緒的執行不會暫停。
例外狀況
逾時值為負且不等於 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 。
您可以指定 Timeout.InfinitemillisecondsTimeout
參數,以無限期暫止執行緒。 不過,我們建議您改用其他 System.Threading 類別,例如 Mutex 、 Monitor 、 EventWaitHandle 或 Semaphore 來同步處理執行緒或管理資源。
系統時鐘會以稱為時鐘解析度的特定速率刻度。 實際的逾時可能不是指定的逾時,因為指定的逾時將會調整為與時鐘刻度一致。 如需時鐘解析和等候時間的詳細資訊,請參閱 Windows 系統 API 的 睡眠功能 。
此方法不會執行標準 COM 和 SendMessage 幫浦。
注意
如果您需要在具有 STAThreadAttribute 的執行緒上睡眠,但想要執行標準 COM 和 SendMessage 幫浦,請考慮使用其中一個指定逾時間隔的方法多 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) 使用 方法多載來封鎖應用程式的主執行緒五次,每次兩秒。
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.InfiniteTimeSpantimeout
參數,以無限期暫止執行緒。 不過,我們建議您改用其他 System.Threading 類別,例如 Mutex 、 Monitor 、 EventWaitHandle 或 Semaphore 來同步處理執行緒或管理資源。
這個 的多 Sleep 載會使用 中的 timeout
整數毫秒總數。 捨棄小數毫秒。
此方法不會執行標準 COM 和 SendMessage 幫浦。
注意
如果您需要在具有 STAThreadAttribute 的執行緒上睡眠,但想要執行標準 COM 和 SendMessage 幫浦,請考慮使用其中一個指定逾時間隔的方法多 Join 載。