Domanda

Sto usando VSTS 2008 + .Net 3.5 + C # per sviluppare un'applicazione Windows Form. La mia confusione è, sembra Application.Exit non impone la chiusura dell'applicazione? In caso contrario, quale metodo devo chiamare per terminare l'applicazione?

MODIFICA 1:

Normalmente il metodo principale è come questo, come uscire con garbo dalla funzione Main senza chiamare Environment.Exit?

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

grazie in anticipo, George

È stato utile?

Soluzione

Application.Exit chiede davvero molto delicatamente il ciclo di messaggi.

Se vuoi che la tua app esca, il modo migliore è di uscire con grazia da Main e chiudere in modo pulito tutti i thread non in background aggiuntivi.

Se vuoi essere brutale ... Environment.Exit o Environment.FailFast ? nota è dura, quasi come uccidere il tuo Process.

Altri suggerimenti

Prova quanto segue:

Process.GetCurrentProcess().Kill();

Environment.Exit non funziona con Winforms e Environment.FailFast genera la propria eccezione.

Se la tua applicazione non si chiude correttamente quando chiami Application.Exit c'è (ovviamente) qualcosa che gli impedisce di farlo. Può trattarsi di qualsiasi cosa, dall'impostazione di un modulo e.Cancel = true nell'evento FormClosing a un thread che non è un thread in background che è ancora in esecuzione. Ti consiglierei di ricercare con attenzione esattamente ciò che mantiene vivo il tuo processo e di chiuderlo in modo piacevole. Ciò dovrebbe chiudere bene anche la tua applicazione.

In genere, in un'applicazione winforms, dovrebbe essere sufficiente chiudere il modulo principale.

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);
}

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

Ho avuto lo stesso problema quando ho scoperto di aprire un nuovo modulo / finestra all'interno del programma, e NASCONDERE solo quel secondo modulo (non chiuderlo), impedirebbe al modulo principale di chiudersi correttamente tramite Application.Exit ();

Esistono due soluzioni in questo caso. Il primo è semplicemente usare Close () sul modulo principale anziché Application.Exit (). La seconda soluzione è utilizzare il seguente codice:

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

Ho scoperto che semplicemente tutto ciò che devi fare è invece di fare application.exit e tutto ciò che devi fare è inserire Fine Abbastanza semplicemente il comando Fine lo chiude

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top