Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Monitor.TryEnter (Método) (Object, Boolean)

Intenta adquirir un bloqueo exclusivo en el objeto especificado y establece de forma atómica un valor que indica si se realizó el bloqueo.

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

public static void TryEnter(
	Object obj,
	ref bool lockTaken
)

Parámetros

obj
Tipo: System.Object
Objeto en el que se va a adquirir el bloqueo.
lockTaken
Tipo: System.Boolean
Resultado del intento de adquirir el bloqueo, pasado por referencia. La entrada debe ser false. El resultado es true si se adquiere el bloqueo; de lo contrario, el resultado es false. El resultado se establece aunque se produzca una excepción durante el intento de adquirir el bloqueo.

ExcepciónCondición
ArgumentException

La entrada de lockTaken es true.

ArgumentNullException

El valor del parámetro obj es null.

Si se realiza correctamente, este método adquiere un bloqueo exclusivo sobre el parámetro obj. Este método se devuelve inmediatamente, tanto si el bloqueo está disponible como si no lo está.

Si no tuvo lugar el bloqueo porque se produjo una excepción, la variable especificada para el parámetro lockTaken es false cuando este método finalice. Esto permite al programa determinar, en todos los casos, si es necesario para liberar el bloqueo.

Este método es similar al método Enter(Object, Boolean), pero nunca se bloqueará. Si el subproceso no puede entrar sin bloquearse, el método devuelve false, y el subproceso no entra en la sección crítica.

NotaNota

Monitor se debe utilizar para bloquear objetos (es decir, tipos de referencia), no tipos de valor. Para obtener más información, consulte Enter y el tema conceptual Monitores.

En el ejemplo de código siguiente se muestra el modelo básico para usar la sobrecarga del método TryEnter(Object, Boolean). Esta sobrecarga siempre establece el valor de la variable que se pasa al parámetro ref(ByRef en Visual Basic) lockTaken, aun cuando el método produce una excepción, de modo que el valor de la variable sea una manera fiable de probar si el bloqueo tiene que ser liberado.


bool acquiredLock = false;

try
{
    Monitor.TryEnter(lockObject, ref acquiredLock);
    if (acquiredLock)
    {

        // Code that accesses resources that are protected by the lock.

    }
    else
    {

        // Code to deal with the fact that the lock was not acquired.

    }
}
finally
{
    if (acquiredLock)
    {
        Monitor.Exit(lockObject);
    }
}


.NET Framework

Compatible con: 4.5, 4

.NET Framework Client Profile

Compatible con: 4

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft