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

Почему Visual Studio не удается установить условную точку останова на этом простом свойстве С#?

В моем объекте С# я устанавливаю условную точку останова с условием value == "Status" в настройщике этого свойства. Обычно он украшен аспектом PostSharp, но я прокомментировал это в этом случае, и у него все еще возникают проблемы.

public virtual string Name
{
    get
    {
        return _name;
    }
    set
    {
        _name = value; // breakpoint here
    }
}

В первый раз, когда выполнение достигает точки останова, VS отображает ошибку:

Visual Studio MessageBox

EDIT - для поиска, это сообщение:

Невозможно установить следующую точку останова:

В (файл).cs, строка 137 символ 17 ('(класс).Name', строка 12), когда 'value == "Status" ' истинно

Для оценки функции требуются все потоки.

Здесь выглядит окно Threads:

Debugger Threads window

Кто-нибудь видел это раньше или имел какие-то идеи о том, что может вызвать отладчик в этом, казалось бы, простом случае? Может ли это иметь какое-то отношение к спальной нити?

4b9b3361

Ответ 1

В конце концов я разработал обходное решение:

public virtual string Name
{
    get
    {
        return _name;
    }
    set
    {
        if (value == "Status")
            DoSomeNoOp(); // Breakpoint here, or Debug.Fail() inside your no-op

        _name = value;
    }
}

Ответ 2

У меня когда-то была эта проблема, когда я столкнулся с ситуацией, когда она выходит из выполнения основного потока. Немного больше информации о потоке вашего приложения поможет. Мне кажется, что это состояние гонки.

Ответ 3

Я не думаю, что он знает, что такое value. Попробуйте поставить точку останова на закрытие } и использовать _name в условии.