英語で読む

次の方法で共有


Thread.Start メソッド

定義

スレッドの実行をスケジュールします。

オーバーロード

Start()

オペレーティング システムによって、現在のインスタンスの状態を Running に変更します。

Start(Object)

オペレーティング システムによって現在のインスタンスの状態が Running に変更され、オプションでスレッドが実行するメソッドで使用するデータを格納するオブジェクトが提供されます。

Start()

オペレーティング システムによって、現在のインスタンスの状態を Running に変更します。

C#
public void Start ();
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Start ();
属性

例外

スレッドが既に開始されています。

メモリ不足のため、このスレッドを開始できません。

次の例では、スレッドを作成して開始します。

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()
   {
      Thread thread1 = new Thread(ThreadWork.DoWork);
      thread1.Start();
      for (int i = 0; i<3; i++) {
         Console.WriteLine("In main.");
         Thread.Sleep(100);
      }
   }
}
// The example displays output like the following:
//       In main.
//       Working thread...
//       In main.
//       Working thread...
//       In main.
//       Working thread...

注釈

スレッドの状態が終了 ThreadState.Running すると、オペレーティング システムは実行のスケジュールを設定できます。 スレッドコンストラクターに指定された または デリゲートによって表されるメソッドの最初の行で、スレッドの ThreadStart ParameterizedThreadStart 実行が開始されます。 の呼び出しによって Start 呼び出し元のスレッドがブロックされない点に注意してください。

注意

このオーバーロードがデリゲートを使用して作成されたスレッドで使用される場合、 はスレッドによって実行される ParameterizedThreadStart null メソッドに渡されます。

スレッドが終了したら、 への別の呼び出しでスレッドを再起動することはできません Start

こちらもご覧ください

適用対象

.NET 7 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

Start(Object)

オペレーティング システムによって現在のインスタンスの状態が Running に変更され、オプションでスレッドが実行するメソッドで使用するデータを格納するオブジェクトが提供されます。

C#
public void Start (object? parameter);
C#
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public void Start (object? parameter);
C#
public void Start (object parameter);

パラメーター

parameter
Object

スレッドが実行するメソッドで使用するデータを格納するオブジェクト。

属性

例外

スレッドが既に開始されています。

メモリ不足のため、このスレッドを開始できません。

ParameterizedThreadStart デリゲートの代わりに ThreadStart デリゲートを使用して、このスレッドは作成されました。

次の例では、静的 ParameterizedThreadStart メソッドとインスタンス メソッドを使用してデリゲートを作成します。

C#
using System;
using System.Threading;

public class Work
{
    public static void Main()
    {
        // Start a thread that calls a parameterized static method.
        Thread newThread = new Thread(Work.DoWork);
        newThread.Start(42);

        // Start a thread that calls a parameterized instance method.
        Work w = new Work();
        newThread = new Thread(w.DoMoreWork);
        newThread.Start("The answer.");
    }
 
    public static void DoWork(object data)
    {
        Console.WriteLine("Static thread procedure. Data='{0}'",
            data);
    }

    public void DoMoreWork(object data)
    {
        Console.WriteLine("Instance thread procedure. Data='{0}'",
            data);
    }
}
// This example displays output like the following:
//       Static thread procedure. Data='42'
//       Instance thread procedure. Data='The answer.'

注釈

スレッドの状態が終了 ThreadState.Running すると、オペレーティング システムは実行のスケジュールを設定できます。 スレッドコンストラクターに指定された または デリゲートによって表されるメソッドの最初の行で、スレッドの ThreadStart ParameterizedThreadStart 実行が開始されます。 の呼び出しによって Start 呼び出し元のスレッドがブロックされない点に注意してください。

スレッドが終了したら、 への別の呼び出しでスレッドを再起動することはできません Start

このオーバーロードとデリゲートを使用すると、スレッド プロシージャにデータを簡単に渡できますが、このオーバーロードにはオブジェクトを渡す可能性があります。この手法はタイプ セーフ ParameterizedThreadStart ではありません。 スレッド プロシージャにデータを渡すより堅牢な方法は、スレッド プロシージャとデータ フィールドの両方をワーカー オブジェクトに入れる方法です。 詳細については、「スレッドの作成」 および「開始時刻にデータを渡す」を参照してください

こちらもご覧ください

適用対象

.NET 7 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1