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

Application.Exit

Я использую VSTS 2008 +.Net 3.5 + С# для разработки приложения Windows Forms. Моя путаница, кажется, Application.Exit не заставляет приложение прекращаться? Если нет, какой метод я должен вызвать для завершения приложения?

ИЗМЕНИТЬ 1:

Обычно основной метод выглядит так: как выйти из основной функции изящно, не вызывая Environment.Exit?

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        try
        {
            Application.Run(new Form1());
        }
        catch (Exception ex)
        {
            Console.WriteLine (ex.Message);
        }
    }

спасибо заранее, Джордж

4b9b3361

Ответ 1

Application.Exit действительно просто очень осторожно запрашивает цикл сообщений.

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

Если вы хотите быть жестоким... Environment.Exit или Environment.FailFast? note это суровое - примерно то же самое, что убить свой собственный Process.

Ответ 2

Попробуйте следующее:

Process.GetCurrentProcess().Kill();

Environment.Exit не работает с Winforms, а Environment.FailFast генерирует собственное исключение.

Ответ 3

Если ваше приложение не выходит изящно, когда вы вызываете Application.Exit, есть (очевидно) что-то, что мешает ему это сделать. Это может быть что угодно: от формы e.Cancel = true в событии FormClosing до потока, который не является фоновым потоком, который все еще работает. Я бы посоветовал вам тщательно изучить, что именно это делает ваш процесс живым, и закрыть это в приятной манере. Это также должно сделать ваше приложение красивым.

Как правило, в приложении winforms должно быть достаточно закрыть основную форму.

Ответ 5

У меня была та же проблема, когда я обнаружил открытие новой формы/окна внутри программы, и только СКРЫВАНИЕ этой второй формы (не закрывая ее) не позволило бы основной форме правильно выйти из приложения. Exit();

В этом случае есть два решения. Во-первых, просто используйте Close() в основной форме вместо Application.Exit(). Второе решение - использовать следующий код:

if (secondForm != null && !secondForm.IsDisposed) secondForm.Dispose();

Ответ 6

Я обнаружил, что просто все, что вам нужно сделать, - это установить приложение application.exit, и все, что вам нужно сделать, Конец Достаточно просто команда End закрывает его