Exportar (0) Imprimir
Expandir todo
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

Thread.Start (Método) (Object)

Hace que el sistema operativo cambie el estado de la instancia actual a ThreadState.Running y, opcionalmente, proporciona un objeto que contiene datos para su uso por el método que el subproceso ejecuta.

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

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public void Start(
	Object parameter
)

Parámetros

parameter
Tipo: System.Object
Objeto que contiene datos para su uso por el método que el subproceso ejecuta.

ExcepciónCondición
ThreadStateException

Ya se inició el subproceso.

OutOfMemoryException

No hay suficiente memoria disponible como para iniciar este subproceso.

InvalidOperationException

Este subproceso se ha creado utilizando un delegado ThreadStart en lugar de un delegado ParameterizedThreadStart.

Una vez que el subproceso se encuentra en estado ThreadState.Running, el sistema operativo puede programarlo para que se ejecute. El subproceso empieza a ejecutarse en la primera línea del método representado por ThreadStart o por el delegado ParameterizedThreadStart proporcionado al constructor del subproceso.

Una vez que el proceso termina, no puede volver a iniciarse con otra llamada a Start.

Esta sobrecarga y el delegado ParameterizedThreadStart facilitan el paso de datos a un procedimiento de un subproceso, pero esta técnica carece de seguridad de tipos puesto que se puede pasar cualquier objeto a esta sobrecarga. 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.

NotaNota

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el valor de propiedad Resources siguiente: Synchronization | ExternalThreading. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación en SQL Server y atributos de protección de host.

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


.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:
© 2014 Microsoft