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

ParameterizedThreadStart (Delegado)

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

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

[ComVisibleAttribute(false)]
public delegate void ParameterizedThreadStart(
	Object obj
)

Parámetros

obj
Tipo: System.Object
Objeto que contiene los datos para el procedimiento de subproceso.

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. Se invoca al delegado ThreadStart o ParameterizedThreadStart en el subproceso y comienza la ejecución en la primera línea del método representado por el delegado. En el caso del delegado ParameterizedThreadStart, el objeto que se pasa al método Start(Object) se pasa al delegado.

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.

NotaNota

Cuando se crea un delegado ParameterizedThreadStart para el método de una instancia en C++, el primer parámetro del constructor es la variable de la instancia. Para un método estático, el primer parámetro del constructor es cero. Para un método estático, el constructor del delegado sólo requiere un parámetro: la dirección del método de devolución de llamada, calificada con el nombre de clase.

El delegado ParameterizedThreadStart y la sobrecarga del método Thread.Start(Object) facilitan el paso de los datos a un procedimiento de subproceso, pero esta técnica carece de seguridad de tipos puesto que se puede pasar cualquier objeto a Thread.Start(Object). Una forma más segura de pasar los datos a un procedimiento de subproceso es colocarlo junto con los campos de datos en un objeto de trabajo. Para obtener más información, vea Crear subprocesos y analizar los datos en el inicio.

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

NotaNota

Los compiladores de C# y Visual Basic deducen el delegado ParameterizedThreadStart de las firmas de los métodos DoMoreWork y DoWork y llaman al constructor correcto. Por lo tanto, no hay ninguna llamada de constructor explícita en el código.


using System;
using System.Threading;

public class Work
{
    public static void Main()
    {
        // To start a thread using a shared thread procedure, use
        // the class name and method name when you create the 
        // ParameterizedThreadStart delegate. C# infers the 
        // appropriate delegate creation syntax:
        //    new ParameterizedThreadStart(Work.DoWork)
        //
        Thread newThread = new Thread(Work.DoWork);

        // Use the overload of the Start method that has a
        // parameter of type Object. You can create an object that
        // contains several pieces of data, or you can pass any 
        // reference type or value type. The following code passes
        // the integer value 42.
        //
        newThread.Start(42);

        // To start a thread using an instance method for the thread 
        // procedure, use the instance variable and method name when 
        // you create the ParameterizedThreadStart delegate. C# infers 
        // the appropriate delegate creation syntax:
        //    new ParameterizedThreadStart(w.DoMoreWork)
        //
        Work w = new Work();
        newThread = new Thread(w.DoMoreWork);

        // Pass an object containing data for the thread.
        //
        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 code example produces the following output (the order 
   of the lines might vary):

Static thread procedure. Data='42'
Instance thread procedure. Data='The answer'
*/


.NET Framework

Compatible con: 4.5, 4, 3.5, 3.0, 2.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:
© 2015 Microsoft