Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

Stack.Synchronized méthode (Stack)

 

Date de publication : novembre 2016

Retourne un synchronisé wrapper (thread-safe) pour le Stack.

Espace de noms:   System.Collections
Assembly:  mscorlib (dans mscorlib.dll)

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public static Stack Synchronized(
	Stack stack
)

Paramètres

stack
Type: System.Collections.Stack

Stack à synchroniser.

Valeur de retour

Type: System.Collections.Stack

Un wrapper synchronisé autour de la Stack.

Exception Condition
ArgumentNullException

stack a la valeur null.

Pour garantir la sécurité des threads de le Stack, toutes les opérations doivent être effectuées via ce wrapper.

L'énumération d'une collection n'est intrinsèquement pas une procédure thread-safe. Même lorsqu'une collection est synchronisée, les autres threads peuvent toujours la modifier, ce qui entraîne la levée d'une exception par l'énumérateur. Pour garantir la sécurité des threads au cours de l'énumération, vous pouvez verrouiller la collection pendant l'ensemble de l'énumération ou bien intercepter les exceptions résultant des modifications apportées par les autres threads.

L’exemple de code suivant montre comment verrouiller la collection à l’aide du SyncRoot pendant toute l’énumération.

Stack myCollection = new Stack();

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

Cette méthode est une opération o (1).

L’exemple suivant montre comment synchroniser un Stack, déterminer si un Stack est synchronisé et utiliser synchronisé Stack.

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

    public static void Main()  {

       // Creates and initializes a new Stack.
       Stack myStack = new Stack();
       myStack.Push( "The" );
       myStack.Push( "quick" );
       myStack.Push( "brown" );
       myStack.Push( "fox" );

       // Creates a synchronized wrapper around the Stack.
       Stack mySyncdStack = Stack.Synchronized( myStack );

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

 myStack is not synchronized.
 mySyncdStack is synchronized.
 */ 

Plateforme Windows universelle
Disponible depuis 10
.NET Framework
Disponible depuis 1.1
Retour au début
Afficher: