В соответствии с моим пониманием блокировка не выводится до тех пор, пока среда выполнения не завершит блок кода блокировки (obj) (поскольку, когда блок завершает работу, он вызывает Monitor.Exit(obj).
При таком понимании я не могу понять причину поведения следующего кода:
private static string obj = "";
private static void RecurseSome(int number)
{
Console.WriteLine(number);
lock (obj)
{
RecurseSome(++number);
}
}
// Вызов: RecurseSome(0)
// Выход: 0 1 2 3...... Qaru exception
Должно быть какое-то понятие, которое мне не хватает. Пожалуйста, помогите.