[英]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.