2010-04-21 2 views
2

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

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

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

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

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

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

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

ответ

2

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

1

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

+0

может это сканирование, если у вас есть какие-либо точки останова или нет? –

+0

@Sam: если у вас есть точки останова, проверка определенно происходит; если у вас нет контрольных точек, могут быть и другие причины для сканирования. Вы можете легко проверить это, измерив время запуска для тяжелого приложения с и без точек останова. – Vlad

1

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

1

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

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

Смежные вопросы