Приложение winforms (not clickonce) принимает аргументы командной строки, которые должны обрабатываться только один раз. Приложение использует Application.Restart()
для перезапуска после определенных изменений в его конфигурации.Изменение аргументов командной строки перед Application.Restart()
Согласно MSDN on Application.Restart()
Если ваше приложение изначально поставлялась параметры командной строки, когда он первым выполняется, перезагрузка будет запустить приложение снова с теми же параметрами.
Что вызывает обработку аргументов командной строки более одного раза.
Есть ли способ изменить (сохраненные) аргументы командной строки перед вызовом Application.Restart()
?
Я не эксперт winforms C#, но как насчет запуска приложения без 'Application.Restart()'? Попробуйте использовать что-то вроде 'System.Diagnostics.Process.Start (« yourapp.exe »);', и после его запуска вы просто убьете свой текущий процесс (тот, который принял аргументы). – Alisson
Несомненно, следуя тому, как работает 'Application.Restart', он более надежен. Сначала он вызывает частный статический метод' ExitInternal' класса 'Application', а затем запускает процесс. –
@RezaAghaei это важное различие для приложений, которые, как и мои, используют ресурсы, которые не могут пересекаться между двумя процессами и должны быть полностью удалены в первую очередь. – khargoosh