Вопрос по c#, multithreading, winforms – Перезапуск приложения C # не вызывает программу Main ()

1

Я уже написал приложение, которое работает с пользовательской базой. Я искал лучший способ использовать для выхода текущего пользователя. Итак, я использовалApplication.Restart(); Soon I found that the code doesn't work properly and Program.Main() больше не перезванивает. Я задавался вопросом, что мой Login form Load Method не собирается выполнять (Форма входа в систему вызывается из класса программы).

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

Откуда ты знаешь, что Мейн больше не вызывается? jglouie
В многопоточных приложениях точки останова работают только в главном потоке afaik Cole Johnson
@ColeJohnson Вы можете установить точки останова в других потоках. jglouie
Возможно, вам нужно присоединиться к новому процессу, который будет создан jglouie
@jglouie Я использовал в нем точку останова mrArmg

Ваш Ответ

3   ответа
6

http://msdn.microsoft.com/en-us/library/system.windows.forms.application.restart.aspx

Comment listed "Bug in VS2010 SP1"

after calling this method, the application no longer run in debug mode, it's not spawned by the IDE and all breakpoints stop functioning.

EDIT: Вот где что-то вроде log4net действительно может быть полезным. Это очень простая библиотека, которую можно добавить в ваш проект, и она позволит вам записать отладочную информацию в файл, поэтому, даже несмотря на то, что следующий экземпляр не был порожден IDE и не получит точки останова, вы все равно можете сделать некоторую проверку, что он '; Ударьте то, что вы ожидаете, используя трассировки отладки. Просто предложение ...

Очень полезно . , , Как вы сказали, режим отладки был главной проблемой. , , Спасибо mrArmg
2

Точка останова не является допустимым способом проверкиMain вводится снова.

Смотрите несколько связанных постов: Application.Restart () создает новый процесс для приложения или нет?

Если вы хотите, вы можете записать в файл или другой простой тест вMain просто чтобы доказать себе, что оно введено.

0

позволяющее продолжить отладку послеApplication.Restart()в виде электроинструмента:

Child Process Debugging Power Tool Blog Post Download in VS Gallery

Похожие вопросы