Thread Thread Thread Thread Constructors

定義

オーバーロード

Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart)

スレッドの開始時にオブジェクトをスレッドに渡すことを許可するデリゲートを指定して、Thread クラスの新しいインスタンスを初期化します。Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started.

Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart)

Thread クラスの新しいインスタンスを初期化します。Initializes a new instance of the Thread class.

Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32)

Thread クラスの新しいインスタンスを初期化して、スレッドの開始時にオブジェクトをスレッドに渡すことを許可するデリゲートとこのスレッドの最大スタック サイズを指定します。Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started and specifying the maximum stack size for the thread.

Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32)

Thread クラスの新しいインスタンスを初期化して、スレッドの最大スタック サイズを指定します。Initializes a new instance of the Thread class, specifying the maximum stack size for the thread.

Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart) Thread(ParameterizedThreadStart)

スレッドの開始時にオブジェクトをスレッドに渡すことを許可するデリゲートを指定して、Thread クラスの新しいインスタンスを初期化します。Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start);
public Thread (System.Threading.ParameterizedThreadStart start);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart)

パラメーター

start
ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart

このスレッドが実行を開始するときに呼び出されるメソッドを表すデリゲート。A delegate that represents the methods to be invoked when this thread begins executing.

例外

次の例の作成と使用の構文を示しています、ParameterizedThreadStart静的メソッドとインスタンス メソッドを持つデリゲート。The following example shows the syntax for creating and using a ParameterizedThreadStart delegate with a static method and an instance method.

using namespace System;
using namespace System::Threading;

namespace SystemThreadingExample
{
    public ref class Work
    {
    public:
        void StartThreads()
        {
            // Start a thread that calls a parameterized static method.
            Thread^ newThread = gcnew
                Thread(gcnew ParameterizedThreadStart(Work::DoWork));
            newThread->Start(42);
              
            // Start a thread that calls a parameterized instance method.
            Work^ someWork = gcnew Work;
            newThread = gcnew Thread(
                        gcnew ParameterizedThreadStart(someWork,
                        &Work::DoMoreWork));
            newThread->Start("The answer.");
        }

        static void DoWork(Object^ data)
        {
            Console::WriteLine("Static thread procedure. Data='{0}'", 
                data);
        }

        void DoMoreWork(Object^ data)
        {
            Console::WriteLine("Instance thread procedure. Data='{0}'", 
                data);
        }
    };
}

//Entry point of example application
int main()
{
    SystemThreadingExample::Work^ samplework = 
        gcnew SystemThreadingExample::Work();
    samplework->StartThreads();
}
// This example displays output like the following:
//       Static thread procedure. Data='42'
//       Instance thread procedure. Data='The answer.'
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.'
Imports System.Threading

Public Class Work
    Shared Sub Main()
        ' Start a thread that calls a parameterized static method.
        Dim newThread As New Thread(AddressOf Work.DoWork)
        newThread.Start(42)

        ' Start a thread that calls a parameterized instance method.
        Dim w As New Work()
        newThread = New Thread(AddressOf w.DoMoreWork)
        newThread.Start("The answer.")
    End Sub
 
    Public Shared Sub DoWork(ByVal data As Object)
        Console.WriteLine("Static thread procedure. Data='{0}'",
                          data)
    End Sub

    Public Sub DoMoreWork(ByVal data As Object) 
        Console.WriteLine("Instance thread procedure. Data='{0}'",
                          data)
    End Sub
End Class
' This example displays output like the following:
'    Static thread procedure. Data='42'
'    Instance thread procedure. Data='The answer.'

注釈

スレッドでは、作成時にその実行は開始しません。A thread does not begin executing when it is created. スレッドの実行をスケジュールするには、呼び出し、Startメソッド。To schedule the thread for execution, call the Start method. データ オブジェクトをスレッドに渡すを使用して、Start(Object)メソッドのオーバー ロードします。To pass a data object to the thread, use the Start(Object) method overload.

注意

Visual Basic の場合は省略できます、ThreadStartスレッドを作成するときに、コンス トラクター。Visual Basic users can omit the ThreadStart constructor when creating a thread. 使用して、AddressOf演算子など、メソッドを渡すときにDim t As New Thread(AddressOf ThreadProc)します。Use the AddressOf operator when passing your method, for example Dim t As New Thread(AddressOf ThreadProc). Visual Basic を自動的に呼び出して、ThreadStartコンス トラクター。Visual Basic automatically calls the ThreadStart constructor.

こちらもご覧ください

Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart) Thread(ThreadStart)

Thread クラスの新しいインスタンスを初期化します。Initializes a new instance of the Thread class.

public:
 Thread(System::Threading::ThreadStart ^ start);
public Thread (System.Threading.ThreadStart start);
new System.Threading.Thread : System.Threading.ThreadStart -> System.Threading.Thread
Public Sub New (start As ThreadStart)

パラメーター

start
ThreadStart ThreadStart ThreadStart ThreadStart

このスレッドが実行を開始するときに呼び出されるメソッドを表す ThreadStart デリゲート。A ThreadStart delegate that represents the methods to be invoked when this thread begins executing.

例外

start パラメーターが null です。The start parameter is null.

次のコード例では、静的メソッドを実行するスレッドを作成する方法を示します。The following code example shows how to create a thread that executes a static method.

using namespace System;
using namespace System::Threading;
ref class Work
{
private:
   Work(){}


public:
   static void DoWork(){}

};

int main()
{
   Thread^ newThread = gcnew Thread( gcnew ThreadStart( &Work::DoWork ) );
   newThread->Start();
}

using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Thread newThread = 
            new Thread(new ThreadStart(Work.DoWork));
        newThread.Start();
    }
}

class Work 
{
    Work() {}

    public static void DoWork() {}
}
Imports System
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main()
        Dim newThread As New Thread(AddressOf Work.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work 

    Private Sub New()
    End Sub

    Shared Sub DoWork()
    End Sub

End Class

次のコード例では、インスタンス メソッドを実行するスレッドを作成する方法を示します。The following code example shows how to create a thread that executes an instance method.

using namespace System;
using namespace System::Threading;
ref class Work
{
public:
   Work(){}

   void DoWork(){}

};

int main()
{
   Work^ threadWork = gcnew Work;
   Thread^ newThread = gcnew Thread( gcnew ThreadStart( threadWork, &Work::DoWork ) );
   newThread->Start();
}

using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        Work threadWork = new Work();
        Thread newThread = 
            new Thread(new ThreadStart(threadWork.DoWork));
        newThread.Start();
    }
}

class Work 
{
    public Work() {}

    public void DoWork() {}
}
Imports System
Imports System.Threading

Public Class Test
    <MTAThread> _
    Shared Sub Main() 
        Dim threadWork As New Work()
        Dim newThread As New Thread(AddressOf threadWork.DoWork)
        newThread.Start()
    End Sub
End Class

Public Class Work

    Sub New()
    End Sub

    Sub DoWork() 
    End Sub

End Class

注釈

スレッドでは、作成時にその実行は開始しません。A thread does not begin executing when it is created. スレッドの実行をスケジュールするには、呼び出し、Startメソッド。To schedule the thread for execution, call the Start method.

注意

Visual Basic の場合は省略できます、ThreadStartスレッドを作成するときに、コンス トラクター。Visual Basic users can omit the ThreadStart constructor when creating a thread. 使用して、AddressOf演算子など、メソッドを渡すときにDim t As New Thread(AddressOf ThreadProc)します。Use the AddressOf operator when passing your method for example Dim t As New Thread(AddressOf ThreadProc). Visual Basic を自動的に呼び出して、ThreadStartコンス トラクター。Visual Basic automatically calls the ThreadStart constructor.

こちらもご覧ください

Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32) Thread(ParameterizedThreadStart, Int32)

Thread クラスの新しいインスタンスを初期化して、スレッドの開始時にオブジェクトをスレッドに渡すことを許可するデリゲートとこのスレッドの最大スタック サイズを指定します。Initializes a new instance of the Thread class, specifying a delegate that allows an object to be passed to the thread when the thread is started and specifying the maximum stack size for the thread.

public:
 Thread(System::Threading::ParameterizedThreadStart ^ start, int maxStackSize);
public Thread (System.Threading.ParameterizedThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ParameterizedThreadStart * int -> System.Threading.Thread
Public Sub New (start As ParameterizedThreadStart, maxStackSize As Integer)

パラメーター

start
ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart ParameterizedThreadStart

このスレッドが実行を開始するときに呼び出されるメソッドを表す ParameterizedThreadStart デリゲート。A ParameterizedThreadStart delegate that represents the methods to be invoked when this thread begins executing.

maxStackSize
Int32 Int32 Int32 Int32

スレッドが使用する最大スタック サイズ (バイト単位)。実行可能ファイルのヘッダーで指定された既定の最大スタック サイズを使用する場合は 0。The maximum stack size, in bytes, to be used by the thread, or 0 to use the default maximum stack size specified in the header for the executable.

重要: 部分的に信頼されているコードでは、既定のスタック サイズを超える maxStackSize は無視されます。Important For partially trusted code, maxStackSize is ignored if it is greater than the default stack size. 例外をスローすることはありません。No exception is thrown.

例外

注釈

このコンス トラクター オーバー ロードを使用しないでください。Avoid using this constructor overload. 使用される既定のスタック サイズ、Thread(ParameterizedThreadStart)コンス トラクターのオーバー ロードは、スレッドの推奨されるスタック サイズ。The default stack size used by the Thread(ParameterizedThreadStart) constructor overload is the recommended stack size for threads. スレッドがある、メモリの問題、最も一般的な原因は無限再帰などのエラーをプログラミングします。If a thread has memory problems, the most likely cause is programming error, such as infinite recursion.

重要

以降では、 .NET Framework 4.NET Framework 4、完全信頼コードで設定できる専用maxStackSize既定のスタック サイズ (1 メガバイト) よりも大きい値にします。Beginning with the .NET Framework 4.NET Framework 4, only fully trusted code can set maxStackSize to a value that is greater than the default stack size (1 megabyte). 大きい値が指定されて場合maxStackSize部分信頼でコードが実行されているときにmaxStackSizeは無視されます、既定のスタック サイズを使用します。If a larger value is specified for maxStackSize when code is running with partial trust, maxStackSize is ignored and the default stack size is used. 例外をスローすることはありません。No exception is thrown. すべての信頼レベルでコードを設定できますmaxStackSizeが既定のスタック サイズより小さい値にします。Code at any trust level can set maxStackSize to a value that is less than the default stack size.

注意

、部分的に信頼されたコードで使用される完全に信頼されたライブラリを開発しているし、スレッドを開始する必要がある場合は、大量の履歴を必要とするまたは、スレッドを作成する前に、完全な信頼をアサートする必要がありますが、既定のスタック サイズを使用します。If you are developing a fully trusted library that will be used by partially trusted code, and you need to start a thread that requires a large stack, you must assert full trust before creating the thread, or the default stack size will be used. そうしないと、スレッドで実行されるコードを完全に制御する場合を除き、します。Do not do this unless you fully control the code that runs on the thread.

場合maxStackSizeが小さい最小スタックのサイズよりも、最小のスタック サイズが使用されます。If maxStackSize is less than the minimum stack size, the minimum stack size is used. 場合maxStackSize倍数ではない、ページ サイズの大きいページ サイズの倍数に丸められます。If maxStackSize is not a multiple of the page size, it is rounded to the next larger multiple of the page size. たとえば、Windows Vista を .NET Framework version 2.0 を使用している場合 256 KB (262, 144 バイト) が最小のスタックのサイズとページ サイズは 64 KB (65,536 バイト)。For example, if you are using the .NET Framework version 2.0 on Windows Vista, 256KB (262,144 bytes) is the minimum stack size, and the page size is 64KB (65,536 bytes).

注意

前に Windows XP および Windows Server 2003、Microsoft Windows のバージョンでmaxStackSizeは無視されますと、実行可能ファイルのヘッダーで指定されたスタック サイズが使用されます。On versions of Microsoft Windows prior to Windows XP and Windows Server 2003, maxStackSize is ignored, and the stack size specified in the executable header is used.

非常に小さなスタック サイズを指定する場合は、スタック オーバーフローの検出を無効にする必要があります。If you specify a very small stack size, you might need to disable stack-overflow probing. スタックが著しく制約されているときに、プローブできます自体、スタック オーバーフローが発生します。When the stack is severely constrained, the probing can itself cause a stack overflow. スタック オーバーフローの検出を無効にするには、アプリケーション構成ファイルに、次を追加します。To disable stack overflow probing, add the following to your application configuration file.

<configuration>  
  <runtime>  
    <disableStackOverflowProbing enabled="true"/>  
  </runtime>  
</configuration>  

Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32) Thread(ThreadStart, Int32)

Thread クラスの新しいインスタンスを初期化して、スレッドの最大スタック サイズを指定します。Initializes a new instance of the Thread class, specifying the maximum stack size for the thread.

public:
 Thread(System::Threading::ThreadStart ^ start, int maxStackSize);
public Thread (System.Threading.ThreadStart start, int maxStackSize);
new System.Threading.Thread : System.Threading.ThreadStart * int -> System.Threading.Thread
Public Sub New (start As ThreadStart, maxStackSize As Integer)

パラメーター

start
ThreadStart ThreadStart ThreadStart ThreadStart

このスレッドが実行を開始するときに呼び出されるメソッドを表す ThreadStart デリゲート。A ThreadStart delegate that represents the methods to be invoked when this thread begins executing.

maxStackSize
Int32 Int32 Int32 Int32

スレッドが使用する最大スタック サイズ (バイト単位)。実行可能ファイルのヘッダーで指定された既定の最大スタック サイズを使用する場合は 0。The maximum stack size, in bytes, to be used by the thread, or 0 to use the default maximum stack size specified in the header for the executable.

重要: 部分的に信頼されているコードでは、既定のスタック サイズを超える maxStackSize は無視されます。Important For partially trusted code, maxStackSize is ignored if it is greater than the default stack size. 例外をスローすることはありません。No exception is thrown.

例外

注釈

このコンス トラクター オーバー ロードを使用しないでください。Avoid using this constructor overload. 使用される既定のスタック サイズ、Thread(ThreadStart)コンス トラクターのオーバー ロードは、スレッドの推奨されるスタック サイズ。The default stack size used by the Thread(ThreadStart) constructor overload is the recommended stack size for threads. スレッドがある、メモリの問題、最も一般的な原因は無限再帰などのエラーをプログラミングします。If a thread has memory problems, the most likely cause is programming error, such as infinite recursion.

重要

以降では、 .NET Framework 4.NET Framework 4、完全信頼コードで設定できる専用maxStackSize既定のスタック サイズ (1 メガバイト) よりも大きい値にします。Beginning with the .NET Framework 4.NET Framework 4, only fully trusted code can set maxStackSize to a value that is greater than the default stack size (1 megabyte). 大きい値が指定されて場合maxStackSize部分信頼でコードが実行されているときにmaxStackSizeは無視されます、既定のスタック サイズを使用します。If a larger value is specified for maxStackSize when code is running with partial trust, maxStackSize is ignored and the default stack size is used. 例外をスローすることはありません。No exception is thrown. すべての信頼レベルでコードを設定できますmaxStackSizeが既定のスタック サイズより小さい値にします。Code at any trust level can set maxStackSize to a value that is less than the default stack size.

注意

、部分的に信頼されたコードで使用される完全に信頼されたライブラリを開発しているし、スレッドを開始する必要がある場合は、大量の履歴を必要とするまたは、スレッドを作成する前に、完全な信頼をアサートする必要がありますが、既定のスタック サイズを使用します。If you are developing a fully trusted library that will be used by partially trusted code, and you need to start a thread that requires a large stack, you must assert full trust before creating the thread, or the default stack size will be used. そうしないと、スレッドで実行されるコードを完全に制御する場合を除き、します。Do not do this unless you fully control the code that runs on the thread.

場合maxStackSizeが小さい最小スタックのサイズよりも、最小のスタック サイズが使用されます。If maxStackSize is less than the minimum stack size, the minimum stack size is used. 場合maxStackSize倍数ではない、ページ サイズの大きいページ サイズの倍数に丸められます。If maxStackSize is not a multiple of the page size, it is rounded to the next larger multiple of the page size. たとえば、Windows Vista を .NET Framework version 2.0 を使用している場合 256 KB (262, 144 バイト) が最小のスタックのサイズとページ サイズは 64 KB (65,536 バイト)。For example, if you are using the .NET Framework version 2.0 on Windows Vista, 256KB (262,144 bytes) is the minimum stack size, and the page size is 64KB (65,536 bytes).

注意

前に Windows XP および Windows Server 2003、Microsoft Windows のバージョンでmaxStackSizeは無視されますと、実行可能ファイルのヘッダーで指定されたスタック サイズが使用されます。On versions of Microsoft Windows prior to Windows XP and Windows Server 2003, maxStackSize is ignored, and the stack size specified in the executable header is used.

非常に小さなスタック サイズを指定する場合は、スタック オーバーフローの検出を無効にする必要があります。If you specify a very small stack size, you might need to disable stack-overflow probing. スタックが著しく制約されているときに、プローブできます自体、スタック オーバーフローが発生します。When the stack is severely constrained, the probing can itself cause a stack overflow. スタック オーバーフローの検出を無効にするには、アプリケーション構成ファイルに、次を追加します。To disable stack overflow probing, add the following to your application configuration file.

<configuration>  
  <runtime>  
    <disableStackOverflowProbing enabled="true"/>  
  </runtime>  
</configuration>  

適用対象