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 Hashtable.Synchronized (Hashtable)

 

Publicado: octubre de 2016

Devuelve un contenedor sincronizado (seguro para subprocesos) para el objeto Hashtable.

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

<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True)>
Public Shared Function Synchronized (
	table As Hashtable
) As Hashtable

Parámetros

table
Type: System.Collections.Hashtable

Hashtable que se va a sincronizar.

Valor devuelto

Type: System.Collections.Hashtable

Contenedor sincronizado (seguro para subprocesos) para el objeto Hashtable.

Exception Condition
ArgumentNullException

El valor de table es null.

El Synchronized método es seguro en subprocesos para varios lectores y escritores. Además, el contenedor sincronizado asegura que hay un único escritor escribir a la vez.

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:

Dim myCollection As New Hashtable()
SyncLock myCollection.SyncRoot
    For Each item In myCollection
        ' Insert your code here.
    Next
End SyncLock

Este método es una operación o (1).

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

Imports System
Imports System.Collections

Public Class SamplesHashtable    

    Public Shared Sub Main()

        ' Creates and initializes a new Hashtable.
        Dim myHT As 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.
        Dim mySyncdHT As Hashtable = Hashtable.Synchronized(myHT)

        ' Displays the sychronization status of both Hashtables.
        Dim msg As String
        If myHT.IsSynchronized Then
            msg = "synchronized"
        Else
            msg = "not synchronized"
        End If
        Console.WriteLine("myHT is {0}.", msg)
        If mySyncdHT.IsSynchronized Then
            msg = "synchronized"
        Else
            msg = "not synchronized"
        End If        
        Console.WriteLine("mySyncdHT is {0}.", msg)
    End Sub
End Class

' This code produces the following output.
' 
' myHT is not synchronized.
' mySyncdHT is synchronized. 

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