以下のコードで、コメント化されたコードのコメントを外すと、プログラムの動作が正しくありません。
private void RecalculateOrders(bool force)
{
//if (force)
//{
// lock (desiredOrdersBuy)
// {
// RecalculateOrdersInternal();
// }
//}
//else
//{
if (Monitor.TryEnter(desiredOrdersBuy))
{
try
{
RecalculateOrdersInternal();
}
finally
{
Monitor.Exit(desiredOrdersBuy);
}
}
//}
}
正確に何が間違っているのかを診断する方法がわかりません。lock
ステートメントがプログラムにどのように影響するかを知るにはどうすればよいですか? デッドロックがある場合、どうすればそれをキャッチできますか? 実行を中断する理由を見つけるために何をしますかlock
?