Thread Construtores
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Inicializa uma nova instância da Thread classe.
Sobrecargas
| Name | Description |
|---|---|
| Thread(ParameterizedThreadStart) |
Inicializa uma nova instância da Thread classe, especificando um delegado que permite que um objeto seja passado para a thread quando a thread é iniciada. |
| Thread(ThreadStart) |
Inicializa uma nova instância da Thread classe. |
| Thread(ParameterizedThreadStart, Int32) |
Inicializa uma nova instância da Thread classe, especificando um delegado que permite que um objeto seja passado para a thread quando a thread é iniciada e especificando o tamanho máximo da pilha da thread. |
| Thread(ThreadStart, Int32) |
Inicializa uma nova instância da Thread classe, especificando o tamanho máximo da pilha para a thread. |
Thread(ParameterizedThreadStart)
Inicializa uma nova instância da Thread classe, especificando um delegado que permite que um objeto seja passado para a thread quando a thread é iniciada.
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 invocar quando este thread começa a ser executado.
Exceções
start é null.
Exemplos
O exemplo seguinte 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.'
Observações
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 a thread, use o Start(Object) método overload.
Note
Visual Basic utilizadores podem omitir o construtor ThreadStart ao criar uma thread. Use o AddressOf operador ao passar o seu método, por exemplo, Dim t As New Thread(AddressOf ThreadProc). Visual Basic chama automaticamente o construtor ThreadStart.
Ver também
Aplica-se a
Thread(ThreadStart)
Inicializa uma nova instância da Thread classe.
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 invocar quando este thread começa a ser executado.
Exceções
O start parâmetro é null.
Exemplos
O exemplo de código seguinte 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 seguinte exemplo de código 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
Observações
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 utilizadores podem omitir o construtor ThreadStart ao criar uma thread. Use o AddressOf operador ao passar o seu método, por exemplo, Dim t As New Thread(AddressOf ThreadProc). Visual Basic chama automaticamente o construtor ThreadStart.
Ver 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 a thread quando a thread é iniciada e especificando o tamanho máximo da pilha da 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 invocar quando este thread começa a ser executado.
- maxStackSize
- Int32
O tamanho máximo da pilha, em bytes, a ser usado pela thread, ou 0 para usar o tamanho máximo da pilha padrão especificado no cabeçalho do executável.
Importante: Para código parcialmente confiável, maxStackSize é ignorado se for maior do que o tamanho padrão da pilha. Nenhuma exceção é lançada.
Exceções
start é null.
maxStackSize é inferior a zero.
Observações
Evite usar esta sobrecarga de construtores. O tamanho padrão da pilha usado pela Thread(ParameterizedThreadStart) sobrecarga do construtor é o tamanho recomendado para threads. Se um thread tiver problemas de memória, a causa mais provável é erro de programação, como recursão infinita.
Importante
A partir do .NET Framework 4, só código totalmente confiável pode definir maxStackSize para um valor superior ao tamanho padrão da pilha (1 megabyte). Se for especificado um valor maior para maxStackSize quando o código está a correr com confiança parcial, maxStackSize é ignorado e o tamanho padrão da pilha é usado. Nenhuma exceção é lançada. O código a qualquer nível de confiança pode definir maxStackSize para um valor inferior ao tamanho padrão da pilha.
Note
Se estiver a desenvolver uma biblioteca totalmente confiável que será usada por código parcialmente confiável, e precisar de iniciar uma thread que exija uma stack grande, deve afirmar total trust antes de criar a thread, ou o tamanho padrão da stack será usado. Não faças isto a menos que controles totalmente o código que corre na thread.
Se maxStackSize for inferior ao tamanho mínimo da pilha, utiliza-se o tamanho mínimo da pilha. Se maxStackSize não for múltiplo do tamanho da página, é arredondado para o múltiplo maior seguinte 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 do executável é utilizado.
Se especificar um tamanho de pilha muito pequeno, pode ser necessário desativar o stack-overflow sonding. Quando a pilha está severamente restrita, a sondagem pode causar um overflow da pilha. Para desativar a sondagem de overflow de pilha, adicione o seguinte ao ficheiro de configuração da sua aplicação numa aplicação .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 a 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 invocar quando este thread começa a ser executado.
- maxStackSize
- Int32
O tamanho máximo da pilha, em bytes, a ser usado pela thread, ou 0 para usar o tamanho máximo da pilha padrão especificado no cabeçalho do executável.
Importante: Para código parcialmente confiável, maxStackSize é ignorado se for maior do que o tamanho padrão da pilha. Nenhuma exceção é lançada.
Exceções
start é null.
maxStackSize é inferior a zero.
Observações
Evite usar esta sobrecarga de construtores. O tamanho padrão da pilha usado pela Thread(ThreadStart) sobrecarga do construtor é o tamanho recomendado para threads. Se um thread tiver problemas de memória, a causa mais provável é erro de programação, como recursão infinita.
Importante
A partir do .NET Framework 4, só código totalmente confiável pode definir maxStackSize para um valor superior ao tamanho padrão da pilha (1 megabyte). Se for especificado um valor maior para maxStackSize quando o código está a correr com confiança parcial, maxStackSize é ignorado e o tamanho padrão da pilha é usado. Nenhuma exceção é lançada. O código a qualquer nível de confiança pode definir maxStackSize para um valor inferior ao tamanho padrão da pilha.
Note
Se estiver a desenvolver uma biblioteca totalmente confiável que será usada por código parcialmente confiável, e precisar de iniciar uma thread que exija uma stack grande, deve afirmar total trust antes de criar a thread, ou o tamanho padrão da stack será usado. Não faças isto a menos que controles totalmente o código que corre na thread.
Se maxStackSize for inferior ao tamanho mínimo da pilha, utiliza-se o tamanho mínimo da pilha. Se maxStackSize não for múltiplo do tamanho da página, é arredondado para o múltiplo maior seguinte do tamanho da página. Por exemplo, se estiveres a usar 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 é 64KB (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 do executável é utilizado.
Se especificar um tamanho de pilha muito pequeno, pode ser necessário desativar o stack-overflow sonding. Quando a pilha está severamente restrita, a sondagem pode causar um overflow da pilha. Para desativar a sondagem de overflow de pilha, adicione o seguinte ao ficheiro de configuração da sua aplicação numa aplicação .NET Framework.
<configuration>
<runtime>
<disableStackOverflowProbing enabled="true"/>
</runtime>
</configuration>