次の方法で共有


Thread.Sleep メソッド (TimeSpan)

指定した時間の間現在のスレッドをブロックします。

Overloads Public Shared Sub Sleep( _
   ByVal timeout As TimeSpan _)
[C#]
public static void Sleep(TimeSpantimeout);
[C++]
public: static void Sleep(TimeSpantimeout);
[JScript]
public static function Sleep(
   timeout : TimeSpan);

パラメータ

  • timeout
    スレッドがブロックされる時間に設定される TimeSpan 。待機中の他のスレッドが実行できるようにこのスレッドの中断を示すには 0 を指定します。スレッドを無制限にブロックするには Infinite を指定します。

例外

例外の種類 条件
ArgumentOutOfRangeException timeout の値が負で、ミリ秒単位の Timeout.Infinite と等しくないか、または MaxValue ミリ秒より大きいです。

解説

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

使用例

[Visual Basic, C#, C++] Sleep メソッドで TimeSpan 値を使用する方法の例を次に示します。

 
Imports System
Imports System.Threading

Public Class Test

    Shared waitTime As New TimeSpan(0, 0, 1)

    Shared Sub Main() 
        Dim newThread As New Thread(AddressOf Work)
        newThread.Start()

        If newThread.Join( _
            TimeSpan.op_Addition(waitTime, waitTime)) Then

            Console.WriteLine("New thread terminated.")
        Else
            Console.WriteLine("Join timed out.")
        End If
    End Sub

    Shared Sub Work()
        Thread.Sleep(waitTime)
    End Sub

End Class

[C#] 
using System;
using System.Threading;

class Test
{
    static TimeSpan waitTime = new TimeSpan(0, 0, 1);

    public static void Main() 
    {
        Thread newThread = 
            new Thread(new ThreadStart(Work));
        newThread.Start();

        if(newThread.Join(waitTime + waitTime))
        {
            Console.WriteLine("New thread terminated.");
        }
        else
        {
            Console.WriteLine("Join timed out.");
        }
    }

    static void Work()
    {
        Thread.Sleep(waitTime);
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Threading;

static TimeSpan waitTime = TimeSpan(0, 0, 1);

__gc class Test
{
public:
    static void Work()
    {
        Thread::Sleep(waitTime);
    }
};

void main() 
{
    Thread* newThread = new Thread(new ThreadStart(0, Test::Work));
    newThread->Start();

    if(newThread->Join(waitTime + waitTime))
    {
        Console::WriteLine(S"New thread terminated.");
    }
    else
    {
        Console::WriteLine(S"Join timed out.");
    }
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, Common Language Infrastructure (CLI) Standard

参照

Thread クラス | Thread メンバ | System.Threading 名前空間 | Thread.Sleep オーバーロードの一覧