Как успешно выйти из приложения Application.Run () для приложения WinForms C#? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть C# приложение WinForms, в котором мне нужно выполнить некоторые предварительные проверки перед запуском полной версии приложения. Например, одна из таких проверок - убедиться, что приложение работает с правами администратора.

Проблема в том, что эти проверки выполняются во время конструктора основного класса моего приложения. Поэтому, если я пытаюсь выйти, используя Application.Exit() в конструкторе, это не сработает. Я знаю, что есть причина, по которой это Application.Exit() работает после завершения построения , как мне изящно выйти из приложения во время вызова конструктора ?

Я не смог найти любое переполнение стека, показывающее такой ответ С пример кода.

ПРИМЕЧАНИЕ: Проверка административных привилегий - это всего лишь одна из нескольких различных проверок, которые я делаю во время вызова конструктора поэтому, пожалуйста, не предлагайте решение, специально решающее JUST для этой проверки, которую я показал в качестве примера.

Мой код:

В приведенном ниже коде я увижу «Выход» окно сообщения, но исполняемый файл никогда не заканчивается - он продолжает работать.

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new SomeClass());
    }
}

class SomeClass : ApplicationContext
{
    public SomeClass()
    {
        if (!RunningAsAdministrator())
        {
            MessageBox.Show("Exiting");
            Application.Exit();
        }
    }

    public static bool RunningAsAdministrator()
    {
        return (new WindowsPrincipal(WindowsIdentity.GetCurrent()))
                  .IsInRole(WindowsBuiltInRole.Administrator);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...