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 Monitor.TryEnter (Object, Int32)

 

Intenta adquirir un bloqueo exclusivo en el objeto especificado durante el número de segundos especificado.

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

public static bool TryEnter(
	object obj,
	int millisecondsTimeout
)

Parámetros

obj
Type: System.Object

Objeto en el que se va a adquirir el bloqueo.

millisecondsTimeout
Type: System.Int32

Número de milisegundos durante los que se va a esperar para adquirir el bloqueo.

Valor devuelto

Type: System.Boolean

Es true si el subproceso actual adquiere el bloqueo; en caso contrario, es false.

Exception Condition
ArgumentNullException

El parámetro obj es null.

ArgumentOutOfRangeException

millisecondsTimeout es negativo y no es igual a Infinite.

Si el millisecondsTimeout parámetro es igual a Infinite, este método es equivalente a Enter. Si millisecondsTimeout es igual a 0, este método es equivalente a TryEnter.

System_CAPS_noteNota

Use Monitor para bloquear objetos (es decir, tipos de referencia), no tipos de valor. Para obtener más información, consulte el Monitor artículo.

Para asegurarse de que el subproceso no entra en la sección crítica, debe examinar el valor devuelto del método y ejecutan código en la sección crítica solo si su valor devuelto es true. El siguiente fragmento de código muestra la trama usada para llamar a este método. Tenga en cuenta que debe llamar a Exit en un finally bloque para asegurarse de que el subproceso que realiza la llamada libera el bloqueo en la sección crítica, si se produce una excepción.

var lockObj = new Object();
int timeout = 500;

if (Monitor.TryEnter(lockObj, timeout)) {
   try {
      // The critical section.
   }
   finally {
      // Ensure that the lock is released.
      Monitor.Exit(lockObj);
   }
}
else {
   // The lock was not acquired.
}

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 1.1
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: