Lire en anglais

Partager via


Hashtable.IsSynchronized Propriété

Définition

Obtient une valeur indiquant si l’accès à Hashtable est synchronisé (thread-safe).

C#
public virtual bool IsSynchronized { get; }

Valeur de propriété

true si l'accès à Hashtable est synchronisé (thread-safe) ; sinon false. La valeur par défaut est false.

Implémente

Exemples

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

C#
using System;
using System.Collections;

public class SamplesHashtable2
{
    public static void Main()
    {
        // Creates and initializes a new Hashtable.
        var myHT = new Hashtable();
        myHT.Add(0, "zero");
        myHT.Add(1, "one");
        myHT.Add(2, "two");
        myHT.Add(3, "three");
        myHT.Add(4, "four");

        // Creates a synchronized wrapper around the Hashtable.
        Hashtable mySyncdHT = Hashtable.Synchronized(myHT);

        // Displays the sychronization status of both Hashtables.
        Console.WriteLine("myHT is {0}.", myHT.IsSynchronized ? "synchronized" : "not synchronized");
        Console.WriteLine("mySyncdHT is {0}.", mySyncdHT.IsSynchronized ? "synchronized" : "not synchronized");
    }
}

/*
This code produces the following output.

myHT is not synchronized.
mySyncdHT is synchronized.
*/

Remarques

Un Hashtable peut prendre en charge un rédacteur et plusieurs lecteurs simultanément. Pour prendre en charge plusieurs enregistreurs, toutes les opérations doivent être effectuées via le wrapper retourné par la Synchronized méthode .

L’énumération par le biais d’une collection n’est pas intrinsèquement 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 de pendant SyncRoot toute l’énumération :

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

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Voir aussi