Thread (Clase) (System
-
Upload
deejay-juanito -
Category
Documents
-
view
43 -
download
3
Transcript of 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
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
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.
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().
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.
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
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.
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
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.
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
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.
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