Thread.Join メソッド (TimeSpan)
スレッドが終了するまで、または指定した時間が経過するまで呼び出し元のスレッドをブロックします。
Overloads Public Function Join( _
ByVal timeout As TimeSpan _) As Boolean
[C#]
public bool Join(TimeSpantimeout);
[C++]
public: bool Join(TimeSpantimeout);
[JScript]
public function Join(
timeout : TimeSpan) : Boolean;
パラメータ
- timeout
スレッドが終了するのを待機する時間に設定される TimeSpan 。
戻り値
スレッドが終了した場合は true 。 timeout パラメータで指定した時間が経過してもスレッドが終了していない場合は false 。
例外
例外の種類 | 条件 |
---|---|
ArgumentOutOfRangeException | timeout の値が負で、ミリ秒単位の Timeout.Infinite と等しくないか、または MaxValue ミリ秒より大きいです。 |
ThreadStateException | 呼び出し元が、 Unstarted 状態のスレッドを結合しようとしました。 |
解説
timeout に Timeout.Infinite が指定されている場合、このメソッドは戻り値以外は Join() と同じように動作します。
このメソッドは、現在のスレッドの状態を変更して、 WaitSleepJoin の状態にします。 ThreadState.Unstarted 状態のスレッドで Join を呼び出すことはできません。
使用例
[Visual Basic, C#, C++] Join メソッドで 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.Join オーバーロードの一覧 | スレッド状態