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

Application.Exit() не работает

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Exit();
            Application.Run(new Form1());
        }

Почему после вызова приложения Application.Exit() приложение не выходит сразу? После этой строки Form1 все еще показывает. Как выйти из приложения сразу. Спасибо.

* Примечания: * Это только пример. Перед выполнением формы я обрабатываю некоторые функции. И в функциях у меня есть код команды для вызова Application.Exit(), но мне интересно, почему приложение не выходит сразу.

Я использую .NET Framework 4.0

4b9b3361

Ответ 1

Application.Exit говорит:

Сообщает все насосы сообщений, которые они должны завершить, а затем закрывает все окна приложений после обработки сообщений.

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

Метод Exit обычно вызывается из цикла сообщений и принудительно возвращает Run.

Ответ 2

Хорошо логически это не сработает. Application не может выйти, если он не запущен.

Было бы лучше использовать Environment.Exit здесь.

Ответ 3

Application.Exit является "хорошим способом" закрытия программы. Выдающиеся сообщения Windows обрабатываются, и только тогда все окна закрыты. Это также означает, что Application.Exit имеет смысл только при запуске цикла сообщений Windows, то есть когда программа находится внутри Application.Run. Вы вызываете Application.Exit до Application.Run, поэтому для выхода нет цикла сообщений.

Из документации:

Сообщает все насосы сообщений, что они должен завершиться, а затем закрыть все окна приложений после сообщений были обработаны.

То, что вы ищете, вероятно, System.Environment.Exit, что более или менее убивает процесс. Environment.Exit все еще выполняет некоторую очистку. Если вам нужно немедленно завершить процесс, вы можете использовать System.Environment.FailFast.

Ответ 4

Добавьте оператор return; вместо Application.Exit();

Ответ 5

Код ниже должен помочь вам.

        if (Application.MessageLoop)
            Application.Exit();
        else
            Environment.Exit(1);

Ответ 6

Приложение даже не работает в этой точке. Вызов выхода не влияет. В основной функции вы хотите вернуться. Вот так:

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        return;
        Application.Run(new Form1());
    }

Ответ 7

Согласно MSDN, Application.Exit()

Сообщает все насосы сообщений, которые они должны завершить, а затем закрывает все окна приложений после обработки сообщений.

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

Я предполагаю, что ваша проблема на самом деле не так проста, как вы описали в вопросе - в любом случае просто return; ing без вызова Application.Run(), вероятно, является решением.