Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

CountdownEvent (Clase)

.NET Framework (current version)
 

Representa una primitiva de sincronización que está señalada cuando su recuento alcanza el valor cero.

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

System.Object
  System.Threading.CountdownEvent

[ComVisibleAttribute(false)]
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public class CountdownEvent : IDisposable

NombreDescripción
System_CAPS_pubmethodCountdownEvent(Int32)

Inicializa una nueva instancia de CountdownEvent clase con el número especificado.

NombreDescripción
System_CAPS_pubpropertyCurrentCount

Obtiene el número de señales restantes necesario para establecer el evento.

System_CAPS_pubpropertyInitialCount

Obtiene el número de señales necesarias inicialmente para establecer el evento.

System_CAPS_pubpropertyIsSet

Indica si el recuento actual del objeto CountdownEvent llegó a cero.

System_CAPS_pubpropertyWaitHandle

Obtiene un WaitHandle que se utiliza para esperar a que el evento esté establecido.

NombreDescripción
System_CAPS_pubmethodAddCount()

Incrementa el CountdownEventdel recuento actual por uno.

System_CAPS_pubmethodAddCount(Int32)

Incrementa el CountdownEventdel recuento actual por un valor especificado.

System_CAPS_pubmethodDispose()

Libera todos los recursos usados por la instancia actual de la clase CountdownEvent.

System_CAPS_protmethodDispose(Boolean)

Libera los recursos no administrados utilizados por el objeto CountdownEvent y, de forma opcional, libera los recursos administrados.

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object.)

System_CAPS_protmethodFinalize()

Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por el recolector de basura. (Heredado de Object.)

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object.)

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object.)

System_CAPS_protmethodMemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object.)

System_CAPS_pubmethodReset()

Restablece el CurrentCount al valor de InitialCount.

System_CAPS_pubmethodReset(Int32)

Restablece el InitialCount propiedad a un valor especificado.

System_CAPS_pubmethodSignal()

Registra una señal con el CountdownEvent, reducir el valor de CurrentCount.

System_CAPS_pubmethodSignal(Int32)

Registra varias señales con el CountdownEvent, reducir el valor de CurrentCount en la cantidad especificada.

System_CAPS_pubmethodToString()

Retorna una cadena que representa al objeto actual. (Heredado de Object.)

System_CAPS_pubmethodTryAddCount()

Intenta incrementar CurrentCount en uno.

System_CAPS_pubmethodTryAddCount(Int32)

Intenta incrementar CurrentCount por un valor especificado.

System_CAPS_pubmethodWait()

Bloquea el subproceso actual hasta que el CountdownEvent está establecido.

System_CAPS_pubmethodWait(CancellationToken)

Bloquea el subproceso actual hasta que el CountdownEvent está establecida, mientras se observa un CancellationToken.

System_CAPS_pubmethodWait(Int32)

Bloquea el subproceso actual hasta que el CountdownEvent se establece utilizando un entero de 32 bits con signo para medir el tiempo de espera.

System_CAPS_pubmethodWait(Int32, CancellationToken)

Bloquea el subproceso actual hasta que el CountdownEvent se establece utilizando un entero de 32 bits con signo para medir el tiempo de espera mientras se observa un CancellationToken.

System_CAPS_pubmethodWait(TimeSpan)

Bloquea el subproceso actual hasta que el CountdownEvent se establece mediante un TimeSpan para medir el tiempo de espera.

System_CAPS_pubmethodWait(TimeSpan, CancellationToken)

Bloquea el subproceso actual hasta que el CountdownEvent se establece mediante un TimeSpan para medir el tiempo de espera mientras se observa un CancellationToken.

Universal Windows Platform
Disponible desde 4.5
.NET Framework
Disponible desde 4.0
Portable Class Library
Compatible con: portable .NET platforms
Windows Phone Silverlight
Disponible desde 8.0
Windows Phone
Disponible desde 8.1

Todos los miembros públicos y protegidos de CountdownEvent son seguros para subprocesos y pueden usarse simultáneamente desde varios subprocesos, con la excepción de Dispose, que sólo debe ser utilizado cuando todas las operaciones en el CountdownEvent ha completado y restablecer, que sólo debe utilizarse cuando otros subprocesos no tienen acceso a los eventos.

Ejemplo

En el ejemplo siguiente se muestra cómo utilizar un CountdownEvent:

using System;
using System.Collections.Concurrent;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;

class Example
{
    static void Main()
    {
        // Initialize a queue and a CountdownEvent
        ConcurrentQueue<int> queue = new ConcurrentQueue<int>(Enumerable.Range(0, 10000));
        CountdownEvent cde = new CountdownEvent(10000); // initial count = 10000

        // This is the logic for all queue consumers
        Action consumer = () =>
        {
            int local;
            // decrement CDE count once for each element consumed from queue
            while (queue.TryDequeue(out local)) cde.Signal();
        };

        // Now empty the queue with a couple of asynchronous tasks
        Task t1 = Task.Factory.StartNew(consumer);
        Task t2 = Task.Factory.StartNew(consumer);

        // And wait for queue to empty by waiting on cde
        cde.Wait(); // will return when cde count reaches 0

        Console.WriteLine("Done emptying queue.  InitialCount={0}, CurrentCount={1}, IsSet={2}",
            cde.InitialCount, cde.CurrentCount, cde.IsSet);

        // Proper form is to wait for the tasks to complete, even if you that their work
        // is done already.
        Task.WaitAll(t1, t2);

        // Resetting will cause the CountdownEvent to un-set, and resets InitialCount/CurrentCount
        // to the specified value
        cde.Reset(10);

        // AddCount will affect the CurrentCount, but not the InitialCount
        cde.AddCount(2);

        Console.WriteLine("After Reset(10), AddCount(2): InitialCount={0}, CurrentCount={1}, IsSet={2}",
            cde.InitialCount, cde.CurrentCount, cde.IsSet);

        // Now try waiting with cancellation
        CancellationTokenSource cts = new CancellationTokenSource();
        cts.Cancel(); // cancels the CancellationTokenSource
        try
        {
            cde.Wait(cts.Token);
        }
        catch (OperationCanceledException)
        {
            Console.WriteLine("cde.Wait(preCanceledToken) threw OCE, as expected");
        }
        finally
        {
           cts.Dispose();
        }
        // It's good for to release a CountdownEvent when you're done with it.
        cde.Dispose();
    }
}
// The example displays the following output:
//    Done emptying queue.  InitialCount=10000, CurrentCount=0, IsSet=True
//    After Reset(10), AddCount(2): InitialCount=10, CurrentCount=12, IsSet=False
//    cde.Wait(preCanceledToken) threw OCE, as expected
Volver al principio
Mostrar: