WindowsForms e chiusura dell’applicazione
Della serie “non si finisce mai di imparare”.
L’argomento in questione sono le WindowsForm del framework Microsoft .NET. Il soggetto, nel dettaglio, la funzione Application.Exit.
Ieri ho scoperto che invocare la funzione sopra citata all’interno del costruttore della finestra non porta ai risultati per cui la funzione è stata realizzata. A pensarci un attimo la cosa è anche ovvia, ma al momento di scrivere il codice, quasi mai affiorano alla mente gli eventuali “back side effects”.
Qui di seguito il codice originale.
using System;
using System.Windows.Forms;
namespace test
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
try
{
// ...
}
catch(Exception)
{
Application.Exit();
}
}
}
}
Come aggirare la cosa? Abbastanza semplice, e direi anche, molto spesso la via è facilmente percorribile: basta spostare il nostro codice “incriminato” nella funzione “allacciata” all’evento load della form stesa. All’interno di questo evento il metodo exit funziona correttamente in quanto, una volta che il costruttore della classe form ha terminato, la coda dei messaggi è attiva e, finalmente, può processare il messaggio generato dalla exit.
Qui di seguito il codice aggiornato.
using System;
using System.Windows.Forms;
namespace test
{
public partial class FormMain : Form
{
public FormMain()
{
InitializeComponent();
}
}
private void FormMain_Load(object sender, EventArgs e)
{
try
{
// ...
}
catch(Exception)
{
Application.Exit();
}
}
}










