Name
Monitor
Synopsis
This class contains static
methods for thread
communication and synchronization. The Enter( )
and Exit( )
methods allow you to obtain and
release a lock on an object, respectively. If an object lock has
already been obtained by another thread, Enter( )
blocks and resumes executing when the lock is released.
Various languages have the ability to silently emit calls on this
type as language built-in primitives. C#’s
lock{ }
syntax translates into these two methods:
the beginning of the lock
block is transformed
into a call to Enter( )
, and the close of the
block calls Exit( )
. (In the presence of
exceptions and return calls, the C# compiler must ensure the release
of the monitor regardless of how the code exits the
lock
block.)
TryEnter( )
attempts to obtain an object lock, but
it continues executing and returns false if unsuccessful.
Wait( )
releases an object lock and causes the
current thread to wait until another thread calls Pulse( )
or PulseAll( )
on the same object.
Wait( )
must be executed from a synchronized block
of code.
public sealed class Monitor { // Public Static Methods public static void Enter(objectobj
); public static void Exit(objectobj
); public static void Pulse(objectobj
); public static void PulseAll(objectobj
); public static bool TryEnter(objectobj
); public static bool TryEnter(objectobj
, intmillisecondsTimeout
); public static bool TryEnter(objectobj
, TimeSpantimeout
); public static bool Wait(objectobj
); public static bool Wait
Get C# in a Nutshell, Second Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.