ParameterizedThreadStart Delegado
TOC
Collapse the table of content
Expand the table of content
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

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.

System_CAPS_noteNota

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.

System_CAPS_noteNota

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.

System_CAPS_noteNota

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()
    {
        // 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.'

.NET Framework
Disponible desde 2.0
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Volver al principio
Mostrar:
© 2016 Microsoft