Quando tu chiudi un programma o il sistema invia al programma la richiesta di spegnersi perchè il sistema deve essere arrestato scatta l'evento Form_Unload

Ora,all'interno di questo, ci dovrebbero essere anche dei parametri (che non ricordo) per distinguere i vari tipi di spegnimento (su ordine dell'utente, di un'altro programma o di Windows, ecc.) che dovresti usare per essere sicuro che l'evento scatti solo se lo spegnimento è stato richiesto da Windows. In linea di massima però (e se l'applicazione non deve mai essere chiusa dall'utente) ti puoi affidare al semplice evento Form_Unload...

Inoltre per "dire" al sistema di attendere (visto che ci vorrà, anche se pur poco, tempo perchè il programma faccia quello che deve fare ) puoi usare la stringa:

codice:
Cancel =1
da inserire nell'evento Form_Unload

Spero di essere stato chiaro... Ciao e fammi sapere.