By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,180 Members | 1,016 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,180 IT Pros & Developers. It's quick & easy.

how to check if Monitor::Exit has been called

P: n/a
Ian
Monitor::Enter and Monitor::Exit must be called in pairs. Is there a way
to determine if Monitor::Exit has been called so that it does not get called
a second time? The psuedocode below illustrates a situation I would like
to implement. Essentially there are 2 monitors and the first monitor can be
released in 2 different locations. This sample codes uses a booleen
variable to make certain the first monitor is not released twice. My
question is, does .NET offer a better way to check if a monitor object has
already been released/exited?

Thanks,

Ian
Monitor::Enter( resource1.Object );
Monitor::Enter( resource2.Object );
bool bMonitor1IsActive = true;

try {
// ...uses resources locked by resource1.Object and resource2.Object ,
may throw exceptions...

Monitor::Exit( resource1.Object );
bMonitor1IsActive = false;

// ...excute code locked to resource2.Object , may throw exceptions...
}
catch( Exception ^pE ) {
// ... handle exception ...
}
finally {
if( bMonitor1IsActive )
Monitor::Exit( resource1.Object );
Monitor::Exit( resource2.Object );
}

Nov 10 '06 #1
Share this Question
Share on Google+
2 Replies


P: n/a
"Ian" <Ia*******@yahXX.comwrote in message
news:qk********************@weber.videotron.net...
Monitor::Enter and Monitor::Exit must be called in pairs. Is there a way
to determine if Monitor::Exit has been called so that it does not get
called a second time? The psuedocode below illustrates a situation I
would like to implement. Essentially there are 2 monitors and the first
monitor can be released in 2 different locations. This sample codes uses
a booleen variable to make certain the first monitor is not released
twice. My question is, does .NET offer a better way to check if a monitor
object has already been released/exited?
That's exactly what the lock keyword is for

lock (resource2)
{
lock(resource1)
{
// code that needs both
}

// code that only needs resource 2
}

-cd
Nov 10 '06 #2

P: n/a
Ian
Hello Carl,

Are you referring to the 'lock' class in the C++ support library? I just
found it in the online help and will take a look at it.

Thanks,

Ian
Nov 10 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.