Thread Construtores
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Inicializa uma nova instância da classe Thread.
Sobrecargas
| Nome | Description |
|---|---|
| Thread(ParameterizedThreadStart) |
Inicializa uma nova instância da Thread classe, especificando um delegado que permite que um objeto seja passado para o thread quando o thread for iniciado. |
| Thread(ThreadStart) |
Inicializa uma nova instância da classe Thread. |
| Thread(ParameterizedThreadStart, Int32) |
Inicializa uma nova instância da Thread classe, especificando um delegado que permite que um objeto seja passado para o thread quando o thread for iniciado e especificando o tamanho máximo da pilha para o thread. |
| Thread(ThreadStart, Int32) |
Inicializa uma nova instância da Thread classe, especificando o tamanho máximo da pilha para o thread. |
Thread(ParameterizedThreadStart)
Inicializa uma nova instância da Thread classe, especificando um delegado que permite que um objeto seja passado para o thread quando o thread for iniciado.
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ça a ser executado.
Exceções
start é 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.
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.'
open System.Threading
type Work() =
static member DoWork(data: obj) =
printfn $"Static thread procedure. Data='{data}'"
member _.DoMoreWork(data: obj) =
printfn $"Instance thread procedure. Data='{data}'"
// Start a thread that calls a parameterized static method.
let newThread = Thread(ParameterizedThreadStart Work.DoWork)
newThread.Start 42
// Start a thread that calls a parameterized instance method.
let w = Work()
let newThread2 = Thread(ParameterizedThreadStart w.DoMoreWork)
newThread.Start "The answer."
// 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. Para agendar o thread para execução, chame o Start método. Para passar um objeto de dados para o thread, use a sobrecarga do Start(Object) método.
Note
Visual Basic usuários podem omitir o construtor ThreadStart ao criar um thread. Use o AddressOf operador ao passar seu método, por exemplo, Dim t As New Thread(AddressOf ThreadProc). Visual Basic chama automaticamente o construtor ThreadStart.
Confira também
Aplica-se a
Thread(ThreadStart)
Inicializa uma nova instância da classe Thread.
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 ThreadStart delegado que representa os métodos a serem invocados quando esse thread começa a ser executado.
Exceções
O start parâmetro é null.
Exemplos
O exemplo de código a seguir mostra como criar um thread que executa um método estático.
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() {}
}
open System.Threading
module Work =
let doWork () = ()
let newThread = Thread(ThreadStart Work.doWork)
newThread.Start()
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.
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() {}
}
open System.Threading
type Work() =
member _.DoWork() = ()
let threadWork = Work()
let newThread = Thread(ThreadStart threadWork.DoWork)
newThread.Start()
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. Para agendar o thread para execução, chame o Start método.
Note
Visual Basic usuários podem omitir o construtor ThreadStart ao criar um thread. Use o AddressOf operador ao passar seu método, por exemplo, Dim t As New Thread(AddressOf ThreadProc). Visual Basic chama automaticamente o construtor ThreadStart.
Confira também
Aplica-se a
Thread(ParameterizedThreadStart, Int32)
Inicializa uma nova instância da Thread classe, especificando um delegado que permite que um objeto seja passado para o thread quando o thread for iniciado e especificando o tamanho máximo da pilha para o 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 ParameterizedThreadStart delegado que representa os métodos a serem invocados quando esse thread começa a ser executado.
- maxStackSize
- Int32
O tamanho máximo da pilha, em bytes, a ser usado pelo thread ou 0 para usar o tamanho máximo de pilha padrão especificado no cabeçalho para o executável.
Importante Para código parcialmente confiável, maxStackSize será ignorado se ele for maior que o tamanho da pilha padrão. Nenhuma exceção é gerada.
Exceções
start é null.
maxStackSize é menor que zero.
Comentários
Evite usar essa sobrecarga de construtor. O tamanho da pilha padrão usado pela sobrecarga do Thread(ParameterizedThreadStart) construtor é o tamanho de pilha recomendado para threads. Se um thread tiver problemas de memória, a causa mais provável será o erro de programação, como a recursão infinita.
Importante
A partir do .NET Framework 4, somente o código totalmente confiável pode definir maxStackSize para um valor maior que o tamanho da pilha padrão (1 megabyte). Se um valor maior for especificado para maxStackSize quando o código estiver em execução com confiança parcial, maxStackSize será ignorado e o tamanho da pilha padrão será usado. Nenhuma exceção é gerada. O código em qualquer nível de confiança pode ser definido maxStackSize como um valor menor que o tamanho da pilha padrão.
Note
Se você estiver desenvolvendo uma biblioteca totalmente confiável que será usada por um código parcialmente confiável e precisar iniciar um thread que exija uma pilha grande, você deverá declarar total confiança antes de criar o thread ou o tamanho da pilha padrão será usado. Não faça isso, a menos que você controle totalmente o código executado no thread.
Se maxStackSize for menor que o tamanho mínimo da pilha, o tamanho mínimo da pilha será usado. 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.
Note
Em versões de Microsoft Windows anteriores a Windows XP e Windows Server 2003, maxStackSize é ignorado e o tamanho da pilha especificado no cabeçalho executável é usado.
Se você especificar um tamanho de pilha muito pequeno, talvez seja necessário desabilitar a investigação de estouro de pilha. Quando a pilha é severamente restrita, a investigação pode causar um estouro de pilha. Para desabilitar a investigação de estouro de pilha, adicione o seguinte ao arquivo de configuração do aplicativo em um aplicativo .NET Framework.
<configuration>
<runtime>
<disableStackOverflowProbing enabled="true"/>
</runtime>
</configuration>
Aplica-se a
Thread(ThreadStart, Int32)
Inicializa uma nova instância da Thread classe, especificando o tamanho máximo da pilha para o 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 ThreadStart delegado que representa os métodos a serem invocados quando esse thread começa a ser executado.
- maxStackSize
- Int32
O tamanho máximo da pilha, em bytes, a ser usado pelo thread ou 0 para usar o tamanho máximo de pilha padrão especificado no cabeçalho para o executável.
Importante Para código parcialmente confiável, maxStackSize será ignorado se ele for maior que o tamanho da pilha padrão. Nenhuma exceção é gerada.
Exceções
start é null.
maxStackSize é menor que zero.
Comentários
Evite usar essa sobrecarga de construtor. O tamanho da pilha padrão usado pela sobrecarga do Thread(ThreadStart) construtor é o tamanho de pilha recomendado para threads. Se um thread tiver problemas de memória, a causa mais provável será o erro de programação, como a recursão infinita.
Importante
A partir do .NET Framework 4, somente o código totalmente confiável pode definir maxStackSize para um valor maior que o tamanho da pilha padrão (1 megabyte). Se um valor maior for especificado para maxStackSize quando o código estiver em execução com confiança parcial, maxStackSize será ignorado e o tamanho da pilha padrão será usado. Nenhuma exceção é gerada. O código em qualquer nível de confiança pode ser definido maxStackSize como um valor menor que o tamanho da pilha padrão.
Note
Se você estiver desenvolvendo uma biblioteca totalmente confiável que será usada por um código parcialmente confiável e precisar iniciar um thread que exija uma pilha grande, você deverá declarar total confiança antes de criar o thread ou o tamanho da pilha padrão será usado. Não faça isso, a menos que você controle totalmente o código executado no thread.
Se maxStackSize for menor que o tamanho mínimo da pilha, o tamanho mínimo da pilha será usado. 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. Por exemplo, se você estiver usando o .NET Framework versão 2.0 em Windows Vista, 256 KB (262.144 bytes) será o tamanho mínimo da pilha e o tamanho da página será de 64 KB (65.536 bytes).
Note
Em versões de Microsoft Windows anteriores a Windows XP e Windows Server 2003, maxStackSize é ignorado e o tamanho da pilha especificado no cabeçalho executável é usado.
Se você especificar um tamanho de pilha muito pequeno, talvez seja necessário desabilitar a investigação de estouro de pilha. Quando a pilha é severamente restrita, a investigação pode causar um estouro de pilha. Para desabilitar a investigação de estouro de pilha, adicione o seguinte ao arquivo de configuração do aplicativo em um aplicativo .NET Framework.
<configuration>
<runtime>
<disableStackOverflowProbing enabled="true"/>
</runtime>
</configuration>