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

Método Queue.Synchronized (Queue)

 

Publicado: octubre de 2016

Devuelve un nuevo Queue que contiene la cola original y es seguro para subprocesos.

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

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public static Queue Synchronized(
	Queue queue
)

Parámetros

queue
Type: System.Collections.Queue

Queue que se va a sincronizar.

Valor devuelto

Type: System.Collections.Queue

Contenedor deQueue que está sincronizado (es seguro para subprocesos).

Exception Condition
ArgumentNullException

El valor de queue es null.

El contenedor devuelto por este método bloquea la cola antes de que se realiza una operación para que se lleva a cabo de una manera segura para subprocesos.

Para garantizar la seguridad para subprocesos de la Queue, todas las operaciones deben realizarse a través de este contenedor solo.

Enumerar una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando una colección está sincronizada, otros subprocesos todavía pueden modificarla, lo que hace que el enumerador produzca una excepción. Con el fin de garantizar la seguridad para la ejecución de subprocesos durante la enumeración, se puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.

En el ejemplo de código siguiente se muestra cómo bloquear la colección utilizando el SyncRoot durante toda la enumeración. Este método es una operación o (1).

Queue myCollection = new Queue();
lock(myCollection.SyncRoot)
{
    foreach (object item in myCollection)
    {
        // Insert your code here.
    }
}

En el ejemplo siguiente se muestra cómo sincronizar un Queue, determinar si un Queue está sincronizada y utilizar sincronizado Queue.

using System;
using System.Collections;
public class SamplesQueue  {

   public static void Main()  {

      // Creates and initializes a new Queue.
      Queue myQ = new Queue();
      myQ.Enqueue( "The" );
      myQ.Enqueue( "quick" );
      myQ.Enqueue( "brown" );
      myQ.Enqueue( "fox" );

      // Creates a synchronized wrapper around the Queue.
      Queue mySyncdQ = Queue.Synchronized( myQ );

      // Displays the sychronization status of both Queues.
      Console.WriteLine( "myQ is {0}.", myQ.IsSynchronized ? "synchronized" : "not synchronized" );
      Console.WriteLine( "mySyncdQ is {0}.", mySyncdQ.IsSynchronized ? "synchronized" : "not synchronized" );
   }
}
/* 
This code produces the following output.

myQ is not synchronized.
mySyncdQ is synchronized.
*/ 

Plataforma universal de Windows
Disponible desde 10
.NET Framework
Disponible desde 1.1
Volver al principio
Mostrar: