La propiedad StringDictionary.SyncRoot se usa para obtener un objeto que se puede usar para sincronizar el acceso a StringDictionary . Solo permite claves de string y valores de string. Sufre de problemas de rendimiento. Implementa una tabla hash con la clave y el valor tipificado fuertemente para que sean strings en lugar de objetos.
Sintaxis: objeto virtual público SyncRoot { get; }
Valor de propiedad: un objeto que se puede usar para sincronizar el acceso al StringDictionary.
Puntos importantes:
- La sincronización de un objeto se realiza de modo que solo un subproceso pueda manipular los datos en StringDictionary.
- Una propiedad es miembro de una clase que proporciona un medio para leer, escribir y calcular campos de datos privados.
- El código de sincronización no puede actuar directamente en la colección, por lo que debe realizar operaciones en el SyncRoot de la colección para garantizar el correcto funcionamiento de las colecciones que se derivan de otros objetos.
- Recuperar el valor de esta propiedad es una operación O(1).
Los siguientes programas ilustran el uso de la propiedad discutida anteriormente:
Ejemplo 1: en este código, usamos SyncRoot para obtener acceso sincronizado al StringDictionary llamado sd , que no es un procedimiento seguro para subprocesos y puede causar una excepción. Entonces, para evitar la excepción, bloqueamos la colección durante la enumeración.
// C# program to illustrate the // use of SyncRoot property of // the StringDictionary class using System; using System.Threading; using System.Collections; using System.Collections.Specialized; namespace sync_root { class GFG { // Main Method static void Main(string[] args) { // Declaring an StringDictionary StringDictionary sd = new StringDictionary(); // Adding elements to StringDictionary sd.Add("Australia", "Canberra"); sd.Add("Belgium", "Brussels"); sd.Add("Netherlands", "Amsterdam"); sd.Add("China", "Beijing"); sd.Add("Russia", "Moscow"); sd.Add("India", "New Delhi"); // Using the SyncRoot property lock(sd.SyncRoot) { // foreach loop to display // the elements in sd foreach(DictionaryEntry i in sd) Console.WriteLine(i.Key + " ---- " + i.Value); } } } }
china ---- Beijing netherlands ---- Amsterdam belgium ---- Brussels australia ---- Canberra india ---- New Delhi russia ---- Moscow
Ejemplo 2:
// C# program to illustrate the // use of SyncRoot property of // the StringDictionary class using System; using System.Threading; using System.Collections; using System.Collections.Specialized; namespace sync_root { class GFG { // Main Method static void Main(string[] args) { // Declaring an StringDictionary StringDictionary sd = new StringDictionary(); // Adding elements to StringDictionary sd.Add("1", "C"); sd.Add("2", "C++"); sd.Add("3", "Java"); sd.Add("4", "C#"); sd.Add("5", "HTML"); // Using the SyncRoot property lock(sd.SyncRoot) { // foreach loop to display // the elements in sd foreach(DictionaryEntry i in sd) Console.WriteLine(i.Key + " ----> " + i.Value); } } } }
3 ----> Java 5 ----> HTML 4 ----> C# 2 ----> C++ 1 ----> C
Referencia:
Publicación traducida automáticamente
Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA