繁体   English   中英

当我使用“显示器”时,因为不能用“锁定”来完成,您能举一个简单的例子吗?

[英]Can you give me a simple example when I am to use “monitor” because it cannot be done with “lock”?

MSDN告诉我,使用锁等效于使用监视器, 但更简洁,更不易出错

您能给我一个简单的(单个过程)示例,为什么由于无法使用lock来强制我使用Monitor

您能给我一个简单的(单个过程)示例,为什么在锁不够时为什么会强制使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM