Вызывает ли воспроизведение программы из VS2005 программу, отличную от файла .exe? - PullRequest
2 голосов
/ 07 апреля 2010

Есть программа, в которой я работаю, которая отлично работает при запуске файла .exe, но работает иначе, чем ожидалось, когда открывалась в VS2005 и воспроизводилась оттуда. Поэтому я спрашиваю здесь, если кто-нибудь знает что-нибудь, что будет работать в файле .exe, но не отладка из VS? Я не могу опубликовать код для кнопок, о которых я говорю, но я постараюсь объяснить как можно лучше.

Есть приемник, подключенный к компьютеру. Когда кнопка нажата на программе, она показывает сообщение и ждет сигнала, который будет получен. После того, как сигнал услышан, первое окно сообщения должно закрыться, а другое - открыть. При использовании файла .exe это происходит просто отлично. Однако при воспроизведении из программы из VS2005 (той же, из которой был сделан .exe) второе сообщение не появляется, когда предполагается, и когда я могу это сделать, первое окно не закрывается. Если это помогает, включается также таймер.

Кроме того, есть ли принципиальная разница между тем, как они работают при выполнении программы?

Если мне нужно что-то прояснить или дать более подробную информацию, пожалуйста, дайте мне знать.

Ответы [ 3 ]

4 голосов
/ 07 апреля 2010

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

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

Внимательно просмотрите ваш код.Подумайте, что может случиться с потоком вашей программы, если вы вставляете задержки между каждым оператором исходного кода.Если это может привести к проблемам, у вас есть ошибка проектирования, которую необходимо исправить.Использование случайных моментов времени приведет к появлению отчетов об ошибках и обращений в службу поддержки, особенно если у ваших клиентов аппаратное обеспечение более медленное, чем у вашего компьютера для разработки.

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

Когда вы работаете под отладчиком или даже на хосте тестирования VS, есть некоторые тонкие различия. Однако это не должно влиять на вашу программу при нормальных обстоятельствах, так как большинство различий похоже на работу (отладочную версию) вашего приложения на более медленной системе.

Учитывая ваше описание, я подозреваю, что ваша проблема на самом деле связана с вызовом пользовательского интерфейса из другого потока, отличного от созданного элемента управления. Обязательно всегда выполняйте маршализацию любых вызовов пользовательского интерфейса с помощью Control.Invoke или Control.BeginInvoke.

0 голосов
/ 08 апреля 2010

Это может быть проблема с хост-процессом, отключение которого - безболезненный щелчок и его так же легко включить. Возможно, стоит попробовать.

Отключить хост-процесс

Я знаю, что это может повлиять на Direct X и другие API, но у меня никогда не было ситуации, в которой вы находитесь, поэтому я не обещаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...