Exportar (0) Imprimir
Expandir todo

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
)
/** @delegate */
/** @attribute ComVisibleAttribute(false) */ 
public delegate void ParameterizedThreadStart (
	Object obj
)
No aplicable.

Parámetros

obj

Objeto que contiene los datos para el procedimiento de subproceso.

Cuando se crea un subproceso administrado, un delegado ThreadStart o ParameterizedThreadStart que se pasa al constructor Thread representa al método que se ejecuta en el subproceso. El subproceso no comienza a ejecutarse hasta que se llama al método System.Threading.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 del delegado 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, cualificada por 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.

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'
*/

Windows 98, Windows 2000 Service Pack 4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar:
© 2014 Microsoft