Подтвердить что ты не робот

При оценке переменных при отладке/шаге

При отладке/переходе по коду, и я пытаюсь проверить переменную в часах, я получаю ошибки для каждой оценки функции определения внутренней переменной.

Кто-нибудь знает, почему это так и как его избежать? Поскольку это влияет на мою способность отлаживать код.

Это в VS2010 Premium.

4b9b3361

Ответ 1

Наиболее вероятной причиной этой проблемы является неявная оценка свойства или метода ToString, который вызывает проблему в потоке оценки CLR. Чтобы проверить это, отключите неявную оценку.

  • Инструменты → Параметры
  • Отладка
  • Снимите флажок "Включить оценку свойств и другие неявные вызовы функций"

Затем перезапустите свой сценарий и посмотрите, работает ли он.

Ответ 2

Visual studio выполняет свойство getter, чтобы получить его значение, если это занимает много времени, потому что он делает что-то дорогое, вы получаете эту ошибку. рассмотреть следующие вопросы:

public class foo
{
    private object lockObject = new object();
    public int bar
    {
        get
        {
             lock(lockObject){
                return 42;
             }
         }
     }
     public int aMethod()
     {
         lock(lockObject)
         {
             var a = this.bar;
             return a*2;   //insert a break point here
          }
      }
}

Если вы добавите точку прерывания в оператор return в aMethod, отладчик не сможет оценить свойство bar, потому что для этого требуется, чтобы он приобрел объект блокировки, но он не сможет это сделать, потому что программа будет удерживать эту блокировку навсегда, пока точка останова активна.