Подтвердить что ты не робот

Является ли Application.Restart плохой?

У меня есть приложение формы. Net, где в событии Main_Load инициализируется много переменных, и у меня есть ситуация, когда я хочу, чтобы моя БД была повторно запрошена, и все vars были установлены в нуль и повторно инициализированы (в основном, форма 100% перезагружена с самого начала), но я написал свою основную нагрузку таким образом (моя ошибка), что это не так просто сделать...

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

Есть ли проблемы, с которыми я, вероятно, столкнулся, используя Application.Restart в этом контексте?

4b9b3361

Ответ 1

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

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

Ответ 2

Это не то, что метод не работает; скорее, много раз программисты забывают, что они поместили что-то в свой код, который остановил бы приложение от автоматического выключения или запуска.

Пожалуйста, следуйте этому Thread

Вы также можете выполнить работу с помощью

 System.Diagnostics.Process.Start(Application.ExecutablePath);
 Application.Exit();

Ответ 3

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

Бывают случаи, когда перезагрузка приложения полезна (например, самообновление), но перезапуск, чтобы имитировать метод ReInitialize(), по моему мнению, плох.

Ответ 4

У меня были проблемы с этим.

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

Устранила мою проблему, добавив Application.restart() в Событие завершения работы.

Это работает внутри среды VS и при запуске EXE

Если вы хотите найти это событие, выберите свои основные свойства проекта и из приложения (вкладка "Сторона" ) выберите "Показать события приложения" внизу.

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