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

参照

Thread クラス | Thread メンバ | System.Threading 名前空間 | スレッドの作成