Thread Construtores

Definição

Inicializa uma nova instância da classe Thread.Initializes a new instance of the Thread class.

Sobrecargas

Thread(ParameterizedThreadStart)

Inicializa uma nova instância da classe Thread, especificando um delegado que permite que um objeto seja passado para o thread quando o thread for iniciado.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)

Inicializa uma nova instância da classe Thread.Initializes a new instance of the Thread class.

Thread(ParameterizedThreadStart, Int32)

Inicializa uma nova instância da classe Thread, especificando um delegado que permite que um objeto seja passado para o thread quando o thread é iniciado e especificando o tamanho máximo da pilha para o 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)

Inicializa uma nova instância da classe Thread, especificando o tamanho máximo da pilha do thread.Initializes a new instance of the Thread class, specifying the maximum stack size for the thread.

Thread(ParameterizedThreadStart)

Inicializa uma nova instância da classe Thread, especificando um delegado que permite que um objeto seja passado para o thread quando o thread for iniciado.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)

Parâmetros

start
ParameterizedThreadStart

Um delegado que representa os métodos a serem invocados quando esse thread começar a ser executado.A delegate that represents the methods to be invoked when this thread begins executing.

Exceções

start é null.start is null.

Exemplos

O exemplo a seguir mostra a sintaxe para criar e usar um ParameterizedThreadStart delegado com um método estático e um método de instância.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.'

Comentários

Um thread não começa A ser executado quando é criado.A thread does not begin executing when it is created. Para agendar o thread para execução, chame o Start método.To schedule the thread for execution, call the Start method. Para passar um objeto de dados para o thread, use a Start(Object) sobrecarga do método.To pass a data object to the thread, use the Start(Object) method overload.

Observação

Visual Basic os usuários podem omitir o ThreadStart Construtor ao criar um thread.Visual Basic users can omit the ThreadStart constructor when creating a thread. Use o AddressOf operador ao passar seu método, por exemplo 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 chama automaticamente o ThreadStart Construtor.Visual Basic automatically calls the ThreadStart constructor.

Confira também

Aplica-se a

Thread(ThreadStart)

Inicializa uma nova instância da classe 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)

Parâmetros

start
ThreadStart

Um delegado ThreadStart que representa os métodos a serem invocados quando esse thread começar a ser executado.A ThreadStart delegate that represents the methods to be invoked when this thread begins executing.

Exceções

O parâmetro start é null.The start parameter is null.

Exemplos

O exemplo de código a seguir mostra como criar um thread que executa um método estático.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.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

O exemplo de código a seguir mostra como criar um thread que executa um método de instância.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.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

Comentários

Um thread não começa A ser executado quando é criado.A thread does not begin executing when it is created. Para agendar o thread para execução, chame o Start método.To schedule the thread for execution, call the Start method.

Observação

Visual Basic os usuários podem omitir o ThreadStart Construtor ao criar um thread.Visual Basic users can omit the ThreadStart constructor when creating a thread. Use o AddressOf operador ao passar seu método por exemplo 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 chama automaticamente o ThreadStart Construtor.Visual Basic automatically calls the ThreadStart constructor.

Confira também

Aplica-se a

Thread(ParameterizedThreadStart, Int32)

Inicializa uma nova instância da classe Thread, especificando um delegado que permite que um objeto seja passado para o thread quando o thread é iniciado e especificando o tamanho máximo da pilha para o 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)

Parâmetros

start
ParameterizedThreadStart

Um delegado ParameterizedThreadStart que representa os métodos a serem invocados quando esse thread começar a ser executado.A ParameterizedThreadStart delegate that represents the methods to be invoked when this thread begins executing.

maxStackSize
Int32

O tamanho máximo da pilha, em bytes, a ser usado pelo thread ou 0 para usar o tamanho de pilha máximo padrão especificado no cabeçalho do executável.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.

Importante   Para um código parcialmente confiável, maxStackSize será ignorado se for maior que o tamanho da pilha padrão.Important For partially trusted code, maxStackSize is ignored if it is greater than the default stack size. Nenhuma exceção é lançada.No exception is thrown.

Exceções

start é null.start is null.

maxStackSize é menor que zero.maxStackSize is less than zero.

Comentários

Evite usar essa sobrecarga de construtor.Avoid using this constructor overload. O tamanho de pilha padrão usado pela Thread(ParameterizedThreadStart) sobrecarga do construtor é o tamanho de pilha recomendado para threads.The default stack size used by the Thread(ParameterizedThreadStart) constructor overload is the recommended stack size for threads. Se um thread tiver problemas de memória, a causa mais provável é o erro de programação, como recursão infinita.If a thread has memory problems, the most likely cause is programming error, such as infinite recursion.

Importante

A partir do .NET Framework 4, somente o código totalmente confiável pode maxStackSize ser definido como um valor maior que o tamanho de pilha padrão (1 megabyte).Beginning with the .NET Framework 4, only fully trusted code can set maxStackSize to a value that is greater than the default stack size (1 megabyte). Se um valor maior for especificado para maxStackSize quando o código estiver sendo executado com confiança parcial, maxStackSize será ignorado e o tamanho de pilha padrão será usado.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. Nenhuma exceção é gerada.No exception is thrown. O código em qualquer nível de confiança pode maxStackSize ser definido como um valor menor que o tamanho de pilha padrão.Code at any trust level can set maxStackSize to a value that is less than the default stack size.

Observação

Se você estiver desenvolvendo uma biblioteca totalmente confiável que será usada pelo código parcialmente confiável e precisar iniciar um thread que exija uma pilha grande, deverá declarar confiança total antes de criar o thread ou o tamanho de pilha padrão será usado.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. Não faça isso, a menos que você controle totalmente o código que é executado no thread.Do not do this unless you fully control the code that runs on the thread.

Se maxStackSize for menor que o tamanho mínimo da pilha, será usado o tamanho mínimo da pilha.If maxStackSize is less than the minimum stack size, the minimum stack size is used. Se maxStackSize não for um múltiplo do tamanho da página, ele será arredondado para o próximo múltiplo maior do tamanho da página.If maxStackSize is not a multiple of the page size, it is rounded to the next larger multiple of the page size. Por exemplo, se você estiver usando o .NET Framework versão 2,0 no Windows Vista, 256KB (262.144 bytes) é o tamanho mínimo da pilha e o tamanho da página é 64 KB (65.536 bytes).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).

Observação

As versões do Microsoft Windows anteriores ao Windows XP e ao Windows Server 2003 maxStackSize são ignoradas e o tamanho da pilha especificado no cabeçalho executável é usado.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.

Se você especificar um tamanho de pilha muito pequeno, talvez seja necessário desabilitar a investigação de estouro de pilha.If you specify a very small stack size, you might need to disable stack-overflow probing. Quando a pilha é severamente restrita, a investigação pode causar um estouro de pilha.When the stack is severely constrained, the probing can itself cause a stack overflow. Para desabilitar a investigação de estouro de pilha, adicione o seguinte ao arquivo de configuração do aplicativo.To disable stack overflow probing, add the following to your application configuration file.

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

Aplica-se a

Thread(ThreadStart, Int32)

Inicializa uma nova instância da classe Thread, especificando o tamanho máximo da pilha do 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)

Parâmetros

start
ThreadStart

Um delegado ThreadStart que representa os métodos a serem invocados quando esse thread começar a ser executado.A ThreadStart delegate that represents the methods to be invoked when this thread begins executing.

maxStackSize
Int32

O tamanho máximo da pilha, em bytes, a ser usado pelo thread ou 0 para usar o tamanho de pilha máximo padrão especificado no cabeçalho do executável.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.

Importante   Para um código parcialmente confiável, maxStackSize será ignorado se for maior que o tamanho da pilha padrão.Important For partially trusted code, maxStackSize is ignored if it is greater than the default stack size. Nenhuma exceção é lançada.No exception is thrown.

Exceções

start é null.start is null.

maxStackSize é menor que zero.maxStackSize is less than zero.

Comentários

Evite usar essa sobrecarga de construtor.Avoid using this constructor overload. O tamanho de pilha padrão usado pela Thread(ThreadStart) sobrecarga do construtor é o tamanho de pilha recomendado para threads.The default stack size used by the Thread(ThreadStart) constructor overload is the recommended stack size for threads. Se um thread tiver problemas de memória, a causa mais provável é o erro de programação, como recursão infinita.If a thread has memory problems, the most likely cause is programming error, such as infinite recursion.

Importante

A partir do .NET Framework 4, somente o código totalmente confiável pode maxStackSize ser definido como um valor maior que o tamanho de pilha padrão (1 megabyte).Beginning with the .NET Framework 4, only fully trusted code can set maxStackSize to a value that is greater than the default stack size (1 megabyte). Se um valor maior for especificado para maxStackSize quando o código estiver sendo executado com confiança parcial, maxStackSize será ignorado e o tamanho de pilha padrão será usado.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. Nenhuma exceção é gerada.No exception is thrown. O código em qualquer nível de confiança pode maxStackSize ser definido como um valor menor que o tamanho de pilha padrão.Code at any trust level can set maxStackSize to a value that is less than the default stack size.

Observação

Se você estiver desenvolvendo uma biblioteca totalmente confiável que será usada pelo código parcialmente confiável e precisar iniciar um thread que exija uma pilha grande, deverá declarar confiança total antes de criar o thread ou o tamanho de pilha padrão será usado.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. Não faça isso, a menos que você controle totalmente o código que é executado no thread.Do not do this unless you fully control the code that runs on the thread.

Se maxStackSize for menor que o tamanho mínimo da pilha, será usado o tamanho mínimo da pilha.If maxStackSize is less than the minimum stack size, the minimum stack size is used. Se maxStackSize não for um múltiplo do tamanho da página, ele será arredondado para o próximo múltiplo maior do tamanho da página.If maxStackSize is not a multiple of the page size, it is rounded to the next larger multiple of the page size. Por exemplo, se você estiver usando o .NET Framework versão 2,0 no Windows Vista, 256KB (262.144 bytes) é o tamanho mínimo da pilha e o tamanho da página é 64 KB (65.536 bytes).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).

Observação

As versões do Microsoft Windows anteriores ao Windows XP e ao Windows Server 2003 maxStackSize são ignoradas e o tamanho da pilha especificado no cabeçalho executável é usado.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.

Se você especificar um tamanho de pilha muito pequeno, talvez seja necessário desabilitar a investigação de estouro de pilha.If you specify a very small stack size, you might need to disable stack-overflow probing. Quando a pilha é severamente restrita, a investigação pode causar um estouro de pilha.When the stack is severely constrained, the probing can itself cause a stack overflow. Para desabilitar a investigação de estouro de pilha, adicione o seguinte ao arquivo de configuração do aplicativo.To disable stack overflow probing, add the following to your application configuration file.

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

Aplica-se a