Application.Exit
-
21-08-2019 - |
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
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 ??strong> 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