Monitor.TryEnter Method (Object, Int32)

Attempts, for the specified number of milliseconds, to acquire an exclusive lock on the specified object.

Namespace:  System.Threading
Assembly:  mscorlib (in mscorlib.dll)

Public Shared Function TryEnter ( _
	obj As Object, _
	millisecondsTimeout As Integer _
) As Boolean


Type: System.Object
The object on which to acquire the lock.
Type: System.Int32
The number of milliseconds to wait for the lock.

Return Value

Type: System.Boolean
true if the current thread acquires the lock; otherwise, false.


The obj parameter is Nothing.


millisecondsTimeout is negative, and not equal to Infinite.

If the millisecondsTimeout parameter equals Infinite, this method is equivalent to Enter. If millisecondsTimeout equals 0, this method is equivalent to TryEnter.


Use Monitor to lock objects (that is, reference types), not value types. For details, see Enter and the conceptual topic Monitors.

Version Notes

Silverlight for Windows Phone Silverlight for Windows Phone

When a user navigates away from a Windows Phone application, the application is typically put into a dormant state. When the user returns to a dormant application, the application automatically resumes. If the application is put into a dormant state while this API is being used, the API will not complete as expected. Applications should be designed to handle this possibility. For more information about the Windows Phone execution model, see Execution Model for Windows Phone.

The following example demonstrates how to use the TryEnter(Object, Int32) method overload with a time-out. This code is part of a larger example provided for the Enter method. The example compares this overload of TryEnter with the overload that does not have a time-out; using the time-out significantly increases the percentage of times that TryEnter succeeds in acquiring the lock.

' Try to add an element to the queue: Add the element to the queue 
' only if the lock becomes available during the specified time
' interval.
Public Function TryEnqueue(ByVal qValue As T, ByVal waitTime As Integer) As Boolean

   ' Request the lock.
   If Monitor.TryEnter(m_inputQueue, waitTime) Then

         ' Ensure that the lock is released.
      End Try
      Return True
      Return False
   End If
End Function


Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.