Exportar (0) Imprimir
Expandir todo
Expandir Minimizar
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

ThreadStart (Delegado)

Representa el método que se ejecuta en una clase Thread.

Espacio de nombres:  System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
public delegate void ThreadStart()

Cuando se crea un subproceso administrado, el método que se ejecuta en el subproceso queda representado por un delegado ThreadStart o ParameterizedThreadStart que se haya pasado al constructor Thread. Pero el subproceso no comenzará a ejecutarse hasta que se llame al método Thread.Start. La ejecución comenzará en la primera línea del método representado por el delegado ThreadStart o ParameterizedThreadStart.

NotaNota

Los usuarios de Visual Basic y C# pueden omitir el constructor del delegado ThreadStart o ParameterizedThreadStart al crear un subproceso. En Visual Basic, al pasar el método al constructor Thread se debe utilizar el operador AddressOf, por ejemplo Dim t As New Thread(AddressOf ThreadProc). En C#, basta con especificar el nombre del procedimiento de subproceso. El compilador selecciona el constructor de delegados correcto.

[C++]

NotaNota

En la versión 2.0 de .NET Framework, cuando se crea un delegado ThreadStart para un método estático en C++, sólo se requiere un parámetro: la dirección del método de devolución de la llamada, calificada por el nombre de clase. En versiones anteriores, para crear un delegado para un método estático se requerían dos parámetros: cero (null) y la dirección de método. En el caso de un método de instancia, todas las versiones requieren dos parámetros: la variable de instancia y la dirección del método.

En el siguiente ejemplo de código se muestra la sintaxis para crear y utilizar un delegado ThreadStart con un método de instancia y un método estático.

Para obtener otro ejemplo simple sobre la forma crear un delegado ThreadStart, vea la sobrecarga del método Thread.Start(). Para obtener más información sobre la creación de subprocesos, vea Crear subprocesos y analizar los datos en el inicio.


using System;
using System.Threading;

class Test
{
    static void Main() 
    {
        // To start a thread using a static thread procedure, use the
        // class name and method name when you create the ThreadStart
        // delegate. Beginning in version 2.0 of the .NET Framework,
        // it is not necessary to create a delegate explicitly. 
        // Specify the name of the method in the Thread constructor, 
        // and the compiler selects the correct delegate. For example:
        //
        // Thread newThread = new Thread(Work.DoWork);
        //
        ThreadStart threadDelegate = new ThreadStart(Work.DoWork);
        Thread newThread = new Thread(threadDelegate);
        newThread.Start();

        // To start a thread using an instance method for the thread 
        // procedure, use the instance variable and method name when 
        // you create the ThreadStart delegate. Beginning in version
        // 2.0 of the .NET Framework, the explicit delegate is not
        // required.
        //
        Work w = new Work();
        w.Data = 42;
        threadDelegate = new ThreadStart(w.DoMoreWork);
        newThread = new Thread(threadDelegate);
        newThread.Start();
    }
}

class Work 
{
    public static void DoWork() 
    {
        Console.WriteLine("Static thread procedure."); 
    }
    public int Data;
    public void DoMoreWork() 
    {
        Console.WriteLine("Instance thread procedure. Data={0}", Data); 
    }
}

/* This code example produces the following output (the order 
   of the lines might vary):
Static thread procedure.
Instance thread procedure. Data=42
 */


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft