Код выполняется только в отладчике - MS Visual C # - PullRequest
2 голосов
/ 16 декабря 2008

Я использую Microsoft Visual C # 2008 Express Edition. (И я извиняюсь - это больше вопрос юзабилити MS Vis C #, чем строгий вопрос программирования ...)

Я написал небольшую программу. когда я запускаю его в MS VC # с отладчиком, все хорошо. Когда я использую «Нажми один раз», чтобы сгенерировать что-то для развертывания (я использую опцию «с компакт-диска» вместо «с веб-сайта»), а затем я устанавливаю это на свой компьютер (или другой компьютер) и все хорошо, кроме части кода не работает!

Код, который не запускается, является частью «catch» цикла try / catch. Умышленно у меня есть ошибка, которая, как я знаю, генерирует исключение в приложении, поэтому я могу проверить этот улов. Уловка вызывает графический интерфейс и просит пользователя отправить мне данные. В отладчике - это отлично работает. В автономном опубликованном приложении это не работает.

есть идеи?

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

Имеет ли что-нибудь из этого смысл?

Ценю помощь!

-Adeena (старый программист Unix C ++ из командной строки, который пытается разобраться в этом «визуальном» мире Microsoft)

1 Ответ

3 голосов
/ 16 декабря 2008

Является ли этот код в конструкторе / OnLoad формы, случайно? Есть известные различия в этой области между с / без отладчика. Исправление обычно заключается в том, чтобы отложить код до тех пор, пока поток пользовательского интерфейса не обработает события. Например:

    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        BeginInvoke((Action)LoadStuff);
    }
    void LoadStuff()
    {
        // todo...
    }
...