Thread.Start メソッド
オペレーティング システムによって、現在のインスタンスの状態を ThreadState.Running に変更します。
Public Sub Start()
[C#]
public void Start();
[C++]
public: void Start();
[JScript]
public function Start();
例外
例外の種類 | 条件 |
---|---|
ThreadStateException | スレッドが既に起動しています。 |
SecurityException | 呼び出し元に、適切な SecurityPermission がありません。 |
OutOfMemoryException | メモリが不足しているため、このスレッドを起動できません。 |
NullReferenceException | このメソッドが、 null 参照 (Visual Basic では Nothing) のスレッド参照で呼び出されました。 |
解説
スレッドが Running 状態になると、オペレーティング システムによってスレッドの実行がスケジュールされます。スレッドが実行を開始すると、スレッドのコンストラクタに提供された ThreadStart デリゲートがメソッドを呼び出します。
いったんスレッドを終了すると、 Start のための別の呼び出しを使っても再起動することはできません。
使用例
[Visual Basic, C#, C++] スレッドを作成して起動する例を次に示します。
Imports System
Imports System.Threading
Public Class ThreadWork
Public Shared Sub DoWork()
Dim i As Integer
For i = 0 To 2
Console.WriteLine("Working thread...")
Thread.Sleep(100)
Next i
End Sub 'DoWork
End Class 'ThreadWork
Class ThreadTest
Public Shared Sub Main()
Dim myThreadDelegate As New ThreadStart(AddressOf ThreadWork.DoWork)
Dim myThread As New Thread(myThreadDelegate)
myThread.Start()
Dim i As Integer
For i = 0 To 2
Console.WriteLine("In main.")
Thread.Sleep(100)
Next i
End Sub 'Main
End Class 'ThreadTest
[C#]
using System;
using System.Threading;
public class ThreadWork
{
public static void DoWork()
{
for(int i = 0; i<3;i++)
{
Console.WriteLine("Working thread...");
Thread.Sleep(100);
}
}
}
class ThreadTest
{
public static void Main()
{
ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
Thread myThread = new Thread(myThreadDelegate);
myThread.Start();
for(int i = 0; i<3; i++)
{
Console.WriteLine("In main.");
Thread.Sleep(100);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Threading;
public __gc class ThreadWork
{
public:
static void DoWork()
{
for(int i = 0; i<3;i++)
{
Console::WriteLine(S"Working thread...");
Thread::Sleep(100);
}
}
};
int main()
{
ThreadStart* myThreadDelegate = new ThreadStart(0, &ThreadWork::DoWork);
Thread* myThread = new Thread(myThreadDelegate);
myThread->Start();
for(int i = 0; i<3; i++)
{
Console::WriteLine(S"In main.");
Thread::Sleep(100);
}
}
[Visual Basic, C#, C++] このコードによって、次の出力が生成されます。
In main.
Working thread...
In main. Working thread...
In main.
Working thread...
[Visual Basic, C#, C++] この出力ステートメントのシーケンスは一般的ですが、どのシステムでも同じであることは保証されません。
[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 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard