在下面的代码中,当我取消注释代码时,我的程序有不正确的行为。
private void RecalculateOrders(bool force)
{
//if (force)
//{
// lock (desiredOrdersBuy)
// {
// RecalculateOrdersInternal();
// }
//}
//else
//{
if (Monitor.TryEnter(desiredOrdersBuy))
{
try
{
RecalculateOrdersInternal();
}
finally
{
Monitor.Exit(desiredOrdersBuy);
}
}
//}
}
我不明白如何诊断到底出了什么问题。我怎么知道lock
语句如何影响我的程序?如果我有死锁,那我怎么能抓住它?你会怎么做才能找出为什么lock
会中断执行?