Точки останова вводят задержку? - PullRequest
2 голосов
/ 21 апреля 2010

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

Вот проблема.

Я пишу надстройку для SAP B1 и столкнулся со следующей проблемой.

Когда я загружаю форму, я хотел бы ввести некоторые значения в матрицу формы.

Но без точки останова (установленной для метода, в котором происходит загрузка формы) часть кода, которая выполняется позже, завершится ошибкой. Эта часть кода ссылается на матрицу, которая еще не отображается, что приводит к исключению. Это все понятно. Но почему установка точки останова «решает» проблему.

Что происходит?

Я подозреваю, что моя точка останова вводит некоторую задержку между загрузкой и отображением моей формы и части кода, которая ссылается на элемент этой формы, но я могу ошибаться.

Ответы [ 4 ]

2 голосов
/ 21 апреля 2010

Запуск под отладчиком замедляет работу вашего приложения и часто скрывает условия гонки даже без точки останова. Когда вы вводите точку останова, это еще более вероятно, чтобы скрыть условия гонки. Проблемы такого рода могут быть трудными для решения. Возможно, вы захотите ввести несколько простых журналов (например, log4net), чтобы увидеть, что происходит, не влияя на приложение так сильно, что вы увидите другое поведение. Просто помните, что даже регистрации может быть достаточно, чтобы что-то изменить.

1 голос
/ 21 апреля 2010

Точки останова вносят некоторую задержку. Точка останова - это добавление дополнительных инструкций к регулярному выполнению ваших программ. Как аппаратные, так и программные точки останова ДОБАВЛЯЮТ что-то для выполнения программы (хотя их количество будет сильно различаться).

http://en.wikipedia.org/wiki/Breakpoint

1 голос
/ 21 апреля 2010

Это приложение на базе Windows Forms? (Боюсь, я ничего не знаю о SAP B1) Попробуйте вставить свой код в событие Load формы, если его там еще нет. Некоторые элементы управления не готовы к правильному использованию до тех пор, пока не будет выделен их дескриптор, чего не происходит, пока цикл сообщений Windows не будет выполнен несколько раз.

1 голос
/ 21 апреля 2010

Наличие точек останова означает, что каждый раз, когда модуль загружается во время выполнения, Visual Studio сканирует модуль на наличие возможных точек останова. Это должно привести к задержке.

...