簡體   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