Array.SyncRoot Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un objeto que se puede usar para sincronizar el acceso a .Array
public:
property System::Object ^ SyncRoot { System::Object ^ get(); };
public:
virtual property System::Object ^ SyncRoot { System::Object ^ get(); };
public object SyncRoot { get; }
public virtual object SyncRoot { get; }
member this.SyncRoot : obj
Public ReadOnly Property SyncRoot As Object
Public Overridable ReadOnly Property SyncRoot As Object
Valor de propiedad
Objeto que se puede usar para sincronizar el acceso a .Array
Implementaciones
Ejemplos
En el ejemplo de código siguiente se muestra cómo bloquear una matriz durante toda la enumeración mediante la SyncRoot propiedad .
Array myArray = new int[] { 1, 2, 4 };
lock(myArray.SyncRoot)
{
foreach (Object item in myArray)
Console.WriteLine(item);
}
let myArray = [| 1; 2; 4|]
lock myArray.SyncRoot (fun () ->
for item in myArray do
printfn $"{item}" )
Dim myArray As Array = New Integer() { 1, 2, 4 }
SyncLock(myArray.SyncRoot)
For Each item As Object In myArray
Console.WriteLine(item)
Next
End SyncLock
Comentarios
Esta propiedad implementa la System.Collections.ICollection interfaz .
Las clases de .NET basadas en Array proporcionan su propia versión sincronizada de la colección mediante la SyncRoot propiedad .
Las clases que usan matrices también pueden implementar su propia sincronización mediante la SyncRoot propiedad . El código de sincronización debe realizar operaciones en de SyncRoot la colección, no directamente en la colección. Esto garantiza el funcionamiento adecuado de las colecciones derivadas de otros objetos. En concreto, mantiene la sincronización adecuada con otros subprocesos que podrían modificar simultáneamente la colección. Tenga en cuenta que algunas implementaciones de SyncRoot pueden devolver el Array propio .
La enumeración a través de una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando se sincroniza una colección, otros subprocesos todavía pueden modificar la colección, lo que hace que el enumerador inicie una excepción. Para garantizar la seguridad de los subprocesos durante la enumeración, puede bloquear la colección durante toda la enumeración o detectar las excepciones resultantes de los cambios realizados por otros subprocesos.
Recuperar el valor de esta propiedad es una operación O(1).