У меня есть проект, в котором отображается пользовательский интерфейс, когда не передаются правильные аргументы командной строки. Это простая утилита, созданная для динамического обновления обоев рабочего стола. Когда это сделано с его обновлением, я звоню
this.Dispose();
но это вызывает проблему, если передаются аргументы командной строки. Форма фактически получает вызов метода Dispose, прежде чем он будет показан пользователю. В результате получилась неприятная ошибка, из-за которой программа не работала должным образом, хотя и работала так, как я хотел.
Я могу с уважением относиться к тому, что я не очень логичен в этом, но я не имею ни малейшего представления о том, как найти решение. Есть ли другой способ чистого вызова метода Dispose () перед загрузкой приложения без возникновения ошибки?
Дополнительная информация:
Выше очевидно не ясно, и я прошу прощения за это. Моя программа запускается из файла Program.cs:
Application.Run(new MainForm());
В конструкторе я проверяю, существуют ли аргументы командной строки, и если это так, вызываю процедуру с именем SilentRun. Этот закрытый метод проверяет, являются ли аргументы допустимыми, и в этом случае передает их методу для совершения действий под названием BrandSystem ().
После завершения BrandSystem () и его работы последний оператор будет
this.Dispose();
поскольку приложению больше нечего делать. Этот же метод вызывается, если аргументы команды не передаются и пользователь применяет графический интерфейс для применения изменений. По сути, как только процесс обновления обоев будет завершен, я хочу, чтобы приложение прекратило работу.
Причина аргументов командной строки заключается в том, что эта своего рода утилита может быть добавлена в установочный пакет и запущена в фоновом режиме. Мой процесс установки не имеет встроенной возможности обновления обоев, и для меня это утилита «две птицы - один камень».
Проблема возникает, когда программа работает в режиме командной строки и вызывает Dispose до того, как все будет загружено. Я открыт для предложений, даже если они докажут мою логику совершенно несостоятельной.