Monitor.Enter(this.StaticLock);
try
{
// Do something ...
ThreadPool.QueueUserWorkItem(state =>
{
try
{
// Do something else...
}
finally
{
Monitor.Exit(this.StaticLock);
}
});
}
catch (Exception)
{
Monitor.Exit(this.StaticLock);
throw;
}
但它不工作,因爲它不能Monitor.Exit
的對象,這不是在當前線程Monitor.Enter
上。怎麼做?我應該使用線程間通信嗎?
你可能做錯了什麼。這是什麼用例? – 2012-02-08 21:37:40
爲什麼不把'Monitor.Enter'放在工作項目內? – Yahia 2012-02-08 21:39:37
是否有你無法鎖定queueUserWorkItem委託內的對象的原因? (您可以鎖定然後解鎖項目,以便/ *做某些事情* /如果需要排隊該項目之前發生的事情。) – Servy 2012-02-08 21:40:09