Pergunta

Estou usando o VSTS 2008 + Net 3.5 + C # para desenvolver aplicações Windows Forms. Minha confusão é, parece que Application.Exit não forçar a aplicação para terminar? Se não, qual o método que eu deveria chamar para fazer a aplicação terminar?

EDIT 1:

Normalmente, o principal método é assim, como sair função principal graciosamente sem chamar Environment.Exit?

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

Agradecemos antecipadamente, George

Foi útil?

Solução

Application.Exit realmente apenas pede o loop de mensagem muito suavemente.

Se você quer que sua aplicação para sair, a melhor maneira é graciosa fazê-lo fora de Main, e limpa perto qualquer segmentos não-fundo adicionais.

Se você quer ser brutal ... Environment.Exit ou Environment.FailFast ? Nota este é dura. - Sobre o mesmo que matar seu próprio Process

Outras dicas

Tente o seguinte:

Process.GetCurrentProcess().Kill();

Environment.Exit não funciona com WinForms e Environment.FailFast lança sua própria exceção.

Se seu aplicativo não sair normalmente quando você chamar Application.Exit há (obviamente) algo que o impede de fazê-lo. Isso pode ser qualquer coisa de um e.Cancel = true definição forma em caso FormClosing, para um segmento que não é uma discussão de fundo que ainda está em execução. Eu conselho você daria para pesquisar cuidadosamente exatamente o que é que mantém o seu processo vivo, e perto que de uma maneira agradável. Isso deve fazer a sua inscrição perto muito bem também.

Tipicamente, numa aplicação winforms, ele deve ser suficiente para fechar a forma principal.

Eu uso

if (System.Windows.Forms.Application.MessageLoop)
{
   // Use this since we are a WinForms app
   System.Windows.Forms.Application.Exit();
}
else
{
   // Use this since we are a console app
   System.Environment.Exit(1);
}

http://geekswithblogs.net/mtreadwell/archive/ 2004/06/06 / 6123.aspx

Eu tive o mesmo problema quando eu descobri a abertura de uma nova forma / janela dentro do programa, e só ESCONDENDO que segunda forma (não fechá-lo), impediria a principal forma de parar corretamente via Application.Exit ();

Existem duas soluções neste caso. Em primeiro lugar é simplesmente usar Close () no formulário principal, em vez de Application.Exit (). Segunda solução é usar o seguinte código:

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

Eu achei que simplesmente tudo que você precisa fazer se ao invés de fazer Application.Exit e tudo o que você apenas tem que fazer é colocar em Fim Simplesmente o suficiente o comando End fecha-lo

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top