在下面的代碼中,當我取消註釋評論代碼時,我的程序有不正確的行爲。如何診斷爲什麼程序因`lock`語句掛起?
private void RecalculateOrders(bool force)
{
//if (force)
//{
// lock (desiredOrdersBuy)
// {
// RecalculateOrdersInternal();
// }
//}
//else
//{
if (Monitor.TryEnter(desiredOrdersBuy))
{
try
{
RecalculateOrdersInternal();
}
finally
{
Monitor.Exit(desiredOrdersBuy);
}
}
//}
}
我不明白如何診斷究竟是什麼錯誤。我怎麼知道lock
聲明如何影響我的程序?如果我有死鎖,那我該如何抓住它?你會怎麼做才能找到爲什麼lock
中斷執行?
你是說'Monitor.TryEnter工作,但'鎖'創建死鎖? –
'Monitor.TryEnter'工作,但'鎖定'不起作用(程序行爲不正確,它掛起)我不知道這是否是死鎖,但它可能是。 – javapowered