Thread (Clase) (System

12
24/09/12 Thread (C lase) (Sy stem.Threading) 1/12 msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx Jerarquía de herencia Sintaxis Constructores Este tema aún no ha recibido ninguna valoración - Valorar este tema Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información. Thread (Clase) .NET Framework 4.5 Crea y controla un subproceso, establece su prioridad y obtiene su estado. System.Object System.Runtime.ConstrainedExecution.CriticalFinalizerObject System.Threading.Thread Espacio de nombres: System.Threading Ensamblado: mscorlib (en mscorlib.dll) El tipo Thread expone los siguientes miembros. Nombre Descripción Thread(ParameterizedThreadStart) Inicializa una nueva instancia de la clase Thread, especificando un delegado que permite pasar un objeto al subproceso cuando este último se inicia. Thread(ThreadStart) Inicializa una nueva instancia de la clase Thread. Thread(ParameterizedThreadStart, Int32) Inicializa una nueva instancia de la clase Thread, especificando un delegado que permite pasar un objeto al subproceso cuando éste último se inicia y especificando el tamaño de pila máximo para el subproceso. Thread(ThreadStart, Int32) Inicializa una nueva instancia de la clase Thread, especificando el tamaño de pila máximo para el subproceso. [ComVisibleAttribute( true )] [ClassInterfaceAttribute(ClassInterfaceType.None)] public sealed class Thread : CriticalFinalizerObject, _Thread C# C++ F# VB

Transcript of Thread (Clase) (System

Page 1: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

1/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

Jerarquía de herencia

Sintaxis

Constructores

Este tema aún no ha recibido ninguna valoración - Valorar este tema

Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el textooriginal. Más información.

Thread (Clase).NET Framework 4.5

Crea y controla un subproceso, establece su prioridad y obtiene su estado.

System.Object System.Runtime.ConstrainedExecution.CriticalFinalizerObject System.Threading.Thread

Espacio de nombres: System.ThreadingEnsamblado: mscorlib (en mscorlib.dll)

El tipo Thread expone los siguientes miembros.

Nombre Descripción

Thread(ParameterizedThreadStart) Inicializa una nueva instancia de la clase

Thread, especificando un delegado que permite

pasar un objeto al subproceso cuando este

último se inicia.

Thread(ThreadStart) Inicializa una nueva instancia de la clase

Thread.

Thread(ParameterizedThreadStart,

Int32)

Inicializa una nueva instancia de la clase

Thread, especificando un delegado que permite

pasar un objeto al subproceso cuando éste

último se inicia y especificando el tamaño de

pila máximo para el subproceso.

Thread(ThreadStart, Int32) Inicializa una nueva instancia de la clase

Thread, especificando el tamaño de pila

máximo para el subproceso.

[ComVisibleAttribute(true)][ClassInterfaceAttribute(ClassInterfaceType.None)]public sealed class Thread : CriticalFinalizerObject, _Thread

C# C++ F# VB

Page 2: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

2/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

Propiedades

Arriba

Nombre Descripción

ApartmentState Obsoleto. Obtiene o establece el estado de apartamento de

este subproceso.

CurrentContext Obtiene el contexto actual donde se está ejecutando el

subproceso.

CurrentCulture Obtiene o establece la referencia cultural del subproceso

actual.

CurrentPrincipal Obtiene o establece la entidad de seguridad del subproceso

actual (de la seguridad basada en roles).

CurrentThread Obtiene el subproceso actualmente en ejecución.

CurrentUICulture Obtiene o establece la referencia cultural actual utilizada por

el administrador de recursos para buscar recursos específicos

de la referencia cultural en tiempo de ejecución.

ExecutionContext Obtiene un objeto ExecutionContext que contiene información

sobre los distintos contextos del subproceso actual.

IsAlive Obtiene un valor que indica el estado de ejecución del

subproceso actual.

IsBackground Obtiene o establece un valor que indica si un subproceso es o

no un subproceso en segundo plano.

IsThreadPoolThread Obtiene un valor que indica si un subproceso pertenece al

grupo de subprocesos administrados o no.

ManagedThreadId Obtiene un identificador único para el actual subproceso

administrado.

Name Obtiene o establece el nombre del subproceso.

Priority Obtiene o establece un valor que indica la prioridad de

programación de un subproceso.

ThreadState Obtiene un valor que contiene los estados del subproceso

actual.

Arriba

Page 3: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

3/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

Métodos

Nombre Descripción

Abort() Produce una excepción ThreadAbortException en el

subproceso en el que se invoca, para iniciar el

proceso de finalización del subproceso.

Normalmente, una llamada a este método finaliza el

subproceso.

Abort(Object) Produce una excepción ThreadAbortException en el

subproceso en el que se invoca, para iniciar el

proceso de finalización del subproceso,

proporcionando al mismo tiempo información sobre

excepciones relativa a la terminación del

subproceso. Normalmente, una llamada a este

método finaliza el subproceso.

AllocateDataSlot Asigna una ranura de datos sin nombre en todos

los subprocesos. Para mejorar el rendimiento, en su

lugar use campos marcados con el atributo

ThreadStaticAttribute.

AllocateNamedDataSlot Asigna una ranura de datos con nombre en todos

los subprocesos. Para mejorar el rendimiento, en su

lugar use campos marcados con el atributo

ThreadStaticAttribute.

BeginCriticalRegion Notifica a un host que la ejecución está a punto de

entrar en una región del código donde los efectos

de una anulación del subproceso o de una

excepción no controlada podrían constituir un

riesgo para otras tareas del dominio de

aplicaciones.

BeginThreadAffinity Notifica a un host que el código administrado está

a punto de ejecutar instrucciones que dependen

de la identidad del subproceso del sistema

operativo físico actual.

DisableComObjectEagerCleanup Desactiva la limpieza automática de contenedores

RCW (Runtime Callable Wrappers) para el

subproceso actual.

EndCriticalRegion Notifica a un host que la ejecución está a punto de

entrar en una región de código donde los efectos

de una anulación del subproceso o de una

excepción no controlada se limitan a la tarea

actual.

Page 4: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

4/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

EndThreadAffinity Notifica a un host que el código administrado ha

terminado de ejecutar instrucciones que dependen

de la identidad del subproceso del sistema

operativo físico actual.

Equals(Object) Determina si el objeto Object especificado es igual

al objeto Object actual. (Se hereda de Object).

Finalize Libera todos los recursos utilizados por la clase

CriticalFinalizerObject. (Se hereda de

CriticalFinalizerObject).

En XNA Framework 3.0, este miembro se hereda de

Object.Finalize().

En Biblioteca de clases portable Biblioteca de

clases portable, este miembro se hereda de

Object.Finalize().

FreeNamedDataSlot Elimina la asociación entre un nombre y una ranura,

en todos los subprocesos del proceso. Para mejorar

el rendimiento, en su lugar use campos marcados

con el atributo ThreadStaticAttribute.

GetApartmentState Devuelve un valor ApartmentState que indica el

estado de tipo apartamento.

GetCompressedStack Obsoleto. Devuelve un objeto CompressedStack

que se puede utilizar para capturar la pila

correspondiente al subproceso actual.

GetData Recupera el valor de la posición especificada en el

subproceso actual, dentro del dominio actual del

subproceso actual. Para mejorar el rendimiento, en

su lugar use campos marcados con el atributo

ThreadStaticAttribute.

GetDomain Devuelve el dominio actual en el que se está

ejecutando el subproceso actual.

GetDomainID Devuelve un identificador único del dominio de la

aplicación.

GetHashCode Devuelve un código hash para el subproceso

actual. (Invalida a Object.GetHashCode()).

En XNA Framework 3.0, este miembro se hereda de

Object.GetHashCode().

Page 5: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

5/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

En Biblioteca de clases portable Biblioteca de

clases portable, este miembro se hereda de

Object.GetHashCode().

GetNamedDataSlot Busca una ranura de datos con nombre. Para

mejorar el rendimiento, en su lugar use campos

marcados con el atributo ThreadStaticAttribute.

GetType Obtiene el objeto Type de la instancia actual. (Se

hereda de Object).

Interrupt Anula un subproceso que se encuentra en estado

de subproceso WaitSleepJoin.

Join() Bloquea el subproceso de la llamada hasta que un

subproceso finaliza, pero continúa realizando

suministro de SendMessage y COM estándar.

Join(Int32) Bloquea el subproceso de llamada hasta que

finaliza un subproceso o transcurre el tiempo

especificado, pero continúa realizando el suministro

de SendMessage y COM estándar.

Join(TimeSpan) Bloquea el subproceso de llamada hasta que

finaliza un subproceso o transcurre el tiempo

especificado, pero continúa realizando el suministro

de SendMessage y COM estándar.

MemberwiseClone Crea una copia superficial del objeto Object actual.

(Se hereda de Object).

MemoryBarrier Sincroniza el acceso a la memoria de la siguiente

forma: el procesador que ejecuta el subproceso

actual no puede reordenar instrucciones de forma

que los accesos a la memoria anteriores a la

llamada a MemoryBarrier se ejecuten después de

los accesos a memoria que siguen a la llamada a

MemoryBarrier.

ResetAbort Anula un método Abort solicitado para el

subproceso actual.

Resume Obsoleto. Reanuda el subproceso que ha sido

suspendido.

SetApartmentState Establece el estado de tipo apartamento de un

subproceso antes de iniciarse.

Page 6: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

6/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

SetCompressedStack Obsoleto. Aplica un objeto CompressedStack

capturado al subproceso actual.

SetData Establece los datos de la ranura especificada en el

subproceso actualmente en ejecución, para el

dominio actual de dicho subproceso. Para obtener

un mejor rendimiento, utilice en su lugar los

campos marcados con el atributo

ThreadStaticAttribute.

SetProcessorAffinity En .NET Compact Framework para Xbox 360,

establece la afinidad del procesador para un

subproceso administrado. La afinidad del

procesador determina los procesadores en los que

se ejecuta el subproceso.

Sleep(Int32) Suspende el subproceso actual durante un período

de tiempo especificado.

Sleep(TimeSpan) Bloquea el subproceso actual durante un período

de tiempo especificado.

SpinWait Hace que un subproceso espere durante el período

de tiempo definido por el parámetro iterations.

Start() Hace que el sistema operativo cambie el estado de

la instancia actual a ThreadState.Running.

Start(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.

Suspend Obsoleto. Suspende el subproceso y, si éste ya se

ha suspendido, no tiene efecto alguno.

ToString Devuelve una cadena que representa el objeto

actual. (Se hereda de Object).

TrySetApartmentState Establece el estado de tipo apartamento de un

subproceso antes de iniciarse.

VolatileRead(Byte) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(Double) Lee el valor de un campo. El valor es el último que

Page 7: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

7/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(Int16) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(Int32) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(Int64) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(IntPtr) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(Object) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(SByte) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(Single) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(UInt16) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(UInt32) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

Page 8: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

8/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

VolatileRead(UInt64) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileRead(UIntPtr) Lee el valor de un campo. El valor es el último que

haya escrito cualquier procesador de un equipo,

independientemente del número de procesadores y

del estado de la caché del procesador.

VolatileWrite(Byte, Byte) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(Double, Double) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(Int16, Int16) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(Int32, Int32) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(Int64, Int64) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(IntPtr, IntPtr) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(Object, Object) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(SByte, SByte) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(Single, Single) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(UInt16, UInt16) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

Page 9: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

9/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

Implementaciones explícitas de interfaces

Comentarios

procesadores del equipo.

VolatileWrite(UInt32, UInt32) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(UInt64, UInt64) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

VolatileWrite(UIntPtr, UIntPtr) Escribe inmediatamente un valor en un campo, de

manera que el valor sea visible para todos los

procesadores del equipo.

Yield Hace que el subproceso que realiza la llamada

proporcione la ejecución a otro subproceso que

está listo para ejecutarse en el procesador actual.

El sistema operativo selecciona el subproceso al

que se va a proporcionar la ejecución.

Arriba

Nombre Descripción

_Thread.GetIDsOfNames Asigna un conjunto de nombres a un conjunto

correspondiente de identificadores de envío.

_Thread.GetTypeInfo Recupera la información de tipo de un objeto, que se

puede utilizar después para obtener la información de

tipo de una interfaz.

_Thread.GetTypeInfoCount Recupera el número de interfaces de información de

tipo que proporciona un objeto (0 ó 1).

_Thread.Invoke Proporciona acceso a las propiedades y los métodos

expuestos por un objeto.

Arriba

Un proceso puede crear uno o varios subprocesos para ejecutar una parte del código deprograma asociado al proceso. Utilice un delegado ThreadStart o el delegadoParameterizedThreadStart para especificar el código del programa ejecutado por un subproceso.El delegado ParameterizedThreadStart permite pasar datos al procedimiento de subproceso.

A lo largo de su existencia, un subproceso siempre se encuentra en uno o más estados definidospor ThreadState. Se puede solicitar un nivel de prioridad de programación (tal y como lo defineThreadPriority) para un subproceso, pero no se garantiza que el sistema operativo lo conceda.

Page 10: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

10/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

Nota

Importante

Ejemplos

GetHashCode proporciona identificación a los subprocesos administrados. Mientras dure elsubproceso, no coincidirá con el valor de ningún otro subproceso, independientemente del dominiode aplicación del que se obtenga el valor.

No es necesario conservar una referencia a un objeto Thread una vez que se ha iniciado elsubproceso. El subproceso continúa ejecutándose hasta que se completa el procedimiento desubproceso.

En el siguiente ejemplo de código se muestra la funcionalidad de un subproceso simple.

Un ThreadId del sistema operativo no tiene relación fija con un subproceso administrado,

puesto que un host no administrado puede controlar la relación entre los subprocesos

administrados y los no administrados. Concretamente, un host sofisticado puede utilizar la API

Hosting de CLR para programar muchos subprocesos administrados en el mismo subproceso del

sistema operativo, o mover un subproceso administrado de unos subprocesos de sistema

operativo a otros.

Comenzando con .NET Framework 4, se cambia el comportamiento de algunos constructores

de subproceso: únicamente el código de plena confianza puede establecer el tamaño de pila

máximo en un valor que es mayor que el tamaño de pila predeterminado (1 megabyte). Si un

valor mayor se especifica cuando el código se está ejecutando con confianza parcial, se

omite el valor mayor y se utiliza el tamaño de pila predeterminado. No se produce ninguna

excepción. El código en cualquier nivel de confianza puede establecer el tamaño de pila

máximo en un valor que es menor que el tamaño de pila predeterminado.

using System;using System.Threading;

// Simple threading scenario: Start a static method running// on a second thread.public class ThreadExample { // The ThreadProc method is called when the thread starts. // It loops ten times, writing to the console and yielding // the rest of its time slice each time, and then ends. public static void ThreadProc() { for (int i = 0; i < 10; i++) { Console.WriteLine("ThreadProc: {0}", i); // Yield the rest of the time slice. Thread.Sleep(0); } }

public static void Main() {

C# C++ VB

Page 11: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

11/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

Información de versión

Este código genera el siguiente resultado:

.NET Framework

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

.NET Framework Client Profile

Console.WriteLine("Main thread: Start a second thread."); // The constructor for the Thread class requires a ThreadStart // delegate that represents the method to be executed on the // thread. C# simplifies the creation of this delegate. Thread t = new Thread(new ThreadStart(ThreadProc));

// Start ThreadProc. Note that on a uniprocessor, the new // thread does not get any processor time until the main thread // is preempted or yields. Uncomment the Thread.Sleep that // follows t.Start() to see the difference. t.Start(); //Thread.Sleep(0);

for (int i = 0; i < 4; i++) { Console.WriteLine("Main thread: Do some work."); Thread.Sleep(0); }

Console.WriteLine("Main thread: Call Join(), to wait until ThreadProc ends."); t.Join(); Console.WriteLine("Main thread: ThreadProc.Join has returned. Press Enter to end program."); Console.ReadLine(); }}

[VB, C++, C#] Main thread: Start a second thread. Main thread: Do some work. ThreadProc: 0 Main thread: Do some work. ThreadProc: 1 Main thread: Do some work. ThreadProc: 2 Main thread: Do some work. ThreadProc: 3 Main thread: Call Join(), to wait until ThreadProc ends. ThreadProc: 4 ThreadProc: 5 ThreadProc: 6 ThreadProc: 7 ThreadProc: 8 ThreadProc: 9 Main thread: ThreadProc.Join has returned. Press Enter to end program.

Page 12: Thread (Clase) (System

24/09/12 Thread (C lase) (Sy stem.Threading)

12/12msdn.microsoft.com/es-es/library /sy stem.threading.thread.aspx

Plataformas

Seguridad para subprocesos

Vea también

© 2012 Microsoft. Reservados todos los derechos.

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

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

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

Este tipo es seguro para la ejecución de subprocesos.

Referencia

System.Threading (Espacio de nombres)

Otros recursos

Subprocesos y subprocesamientoUtilizar subprocesos y subprocesamiento

¿Le ha resultado útil? Sí No

Contenido de la comunidad