[英]Please can someone give me a simple example of how to use System.Monitor in C#?
[英]Can you give me a simple example when I am to use “monitor” because it cannot be done with “lock”?
您能给我一个简单的(单个过程)示例,为什么在锁不够时为什么会强制使用Monitor?
当然。 假设您想采取行动, 如果可以获取该锁,但是如果某个其他对象已经拥有该锁,则您不想阻塞的时间超过一定时间:
bool gotMonitor = false;
try
{
Monitor.TryEnter(monitor, 500, ref gotMonitor);
if (gotMonitor)
{
// Okay, we're in the lock. We can do something useful now.
}
else
{
// Timed out - do something else
}
}
finally
{
if (gotMonitor)
{
Monitor.Exit(monitor);
}
}
(请注意,我故意不 使用TryEnter
的重载,后者仅返回成功/失败 -我使用的版本更可靠,因为ref
参数的设置相对于锁获取而言是原子的。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.