Exportar (0) Imprimir
Expandir todo

Hashtable.Synchronized (Método)

Actualización: noviembre 2007

Devuelve un contenedor sincronizado (seguro para la ejecución de subprocesos) para Hashtable.

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

[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true)]
public static Hashtable Synchronized(
	Hashtable table
)
/** @attribute HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true) */
public static Hashtable Synchronized(
	Hashtable table
)
public static function Synchronized(
	table : Hashtable
) : Hashtable

Parámetros

table
Tipo: System.Collections.Hashtable
Hashtable que se va a sincronizar.

Valor devuelto

Tipo: System.Collections.Hashtable
Contenedor sincronizado (seguro para la ejecución de subprocesos) para Hashtable.

ExcepciónCondición
ArgumentNullException

table es null.

k485s1f2.alert_note(es-es,VS.90).gifNota:

El atributo HostProtectionAttribute aplicado a este tipo o miembro tiene el siguiente valor de la propiedad Resources: Synchronization. El atributo HostProtectionAttribute no afecta a las aplicaciones de escritorio (que normalmente se inician haciendo doble clic en un icono, escribiendo un comando o introduciendo una dirección URL en el explorador). Para obtener más información, vea la clase HostProtectionAttribute o Programación de SQL Server y atributos de protección del host.

Synchronized admite varios subprocesos de escritura, siempre que no haya ningún subproceso leyendo el objeto Hashtable. El contenedor sincronizado no proporciona acceso seguro para la ejecución de subprocesos en el caso de uno o varios lectores y uno o varios escritores.

La enumeración en una colección no es en esencia un procedimiento seguro para la ejecución de 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, es posible bloquear la colección durante toda la enumeración o detectar las excepciones debidas a cambios efectuados por otros subprocesos.

vb#c#

En el siguiente ejemplo de código se muestra cómo bloquear la colección utilizando SyncRoot durante toda la enumeración:

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

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

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

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

   public static void Main()  {

      // Creates and initializes a new Hashtable.
      Hashtable 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.
*/ 


import System.*;
import System.Collections.*;

public class SamplesHashtable
{
    public static void main(String[] args)
    {
        // Creates and initializes a new Hashtable.
        Hashtable myHT = new Hashtable();

        myHT.Add(new Integer(0), "zero");
        myHT.Add(new Integer(1), "one");
        myHT.Add(new Integer(2), "two");
        myHT.Add(new Integer(3), "three");
        myHT.Add(new Integer(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.get_IsSynchronized()) ? 
            "synchronized" : "not synchronized");
        Console.WriteLine("mySyncdHT is {0}.", 
            (mySyncdHT.get_IsSynchronized()) ? 
            "synchronized" : "not synchronized");
    } //main
} //SamplesHashtable

/* 
 This code produces the following output.

 myHT is not synchronized.
 mySyncdHT is synchronized.
 */


import System
import System.Collections

// Creates and initializes a new Hashtable.
var myHT : Hashtable = 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.
var mySyncdHT : Hashtable = Hashtable.Synchronized(myHT)

// Displays the sychronization status of both Hashtables.
var msg : String
if(myHT.IsSynchronized)
    msg = "synchronized"
else
    msg = "not synchronized"
Console.WriteLine("myHT is {0}.", msg)
if(mySyncdHT.IsSynchronized)
    msg = "synchronized"
else
    msg = "not synchronized"
Console.WriteLine("mySyncdHT is {0}.", msg)

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


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0, 1.0

XNA Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft