Выход из приложения с помощью Application.Выход без отображения GUI

#c# #winforms #exit

#c# #winforms #выход

Вопрос:

Резюме: Когда приложение не запускается с указанной учетной записью пользователя, приложение завершает работу, но все еще создает графический интерфейс пользователя. Я хочу, чтобы он полностью вышел

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

Этот код находится в моем основном методе. Это форма Windows.

Код:

 public ProgramMain()
{
    String runningUser = Environment.UserName;
    if (!runningUser.Contains("asdf"))
    {
        MessageBox.Show("You must run this application with your asdf account.");
        Application.Exit();
    }
    else
    {
        InitializeComponent();
    }
}
  

Комментарии:

1. Этот код находится внутри вашего Main метода? Кроме того, это WPF, Winforms или что-то еще?

2. этот код находится в моем основном методе. это форма Windows

Ответ №1:

В файле Program.cs в Main вы увидите Application.Run(), если вы выполните проверку до того, как попадете в эту строку кода. Затем, если пользователь неверен, просто пропустите строку.

Application.Run() — это строка для запуска цикла выполнения приложения.

Если цикл выполнения никогда не выполняется, а main завершается. приложение завершит работу.

Комментарии:

1. 1. Вот как я обрабатываю дублирующиеся экземпляры моего запускаемого приложения.

2. Спасибо, Джейсон. Это имеет смысл. Я только что исправил свой код. Я сделаю вас своим решением.

Ответ №2:

Вы кодируете в форме, а не в событии Main() в program.cs. Если вы завершите работу до фактического создания экземпляра формы, вы не получите графический интерфейс пользователя.

Ответ №3:

Вы зашли слишком далеко. InitializeComponent выглядит так, как будто вы уже находитесь внутри формы Windows. Тогда вы уже создали окно. Установите флажок в методе main перед созданием формы, тогда ничего не отображается. Вы можете взломать отладчик и проверить стек вызовов. Найдите первый метод, в котором используется код из вашего проекта. Установите в этом методе проверку, и все должно быть в порядке.

С уважением, Алоис Краус

Ответ №4:

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