Visualizzazione dei risultati da 1 a 5 su 5

Discussione: [VB.NET] Codice nell'evento MyApplication_Shutdown non viene eseguito

  1. #1

    [VB.NET] Codice nell'evento MyApplication_Shutdown non viene eseguito

    Salve, ho un'applicazione sviluppata con Visual Studio 2015 dove vorrei registrare avvio e arresto della stessa in un file log, ho aggiunto del codice sia nell'evento MyApplication_Startup, sia nell'evento MyApplication_Shutdown, il messaggio nel log viene scritto all'avvio dell'applicazione, mentre quando viene terminata non viene scritto nulla, ho provato a inserire un punto d'interruzione vicino al codice nell'evento MyApplication_Shutdown ma alla chiusura non viene proprio preso in considerazione, come se l'evento non si verificasse, sbaglio qualcosa?

  2. #2
    Ho scoperto l'arcano, chiudevo l'applicazione con l'istruzione "End" dopo aver chiuso il form:

    codice:
            Close()
            Dispose()
            End
    Togliendo l'"End" passa prima per l'evento e poi l'applicazione si chiude.
    Volendo intercettare l'"End"?

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,041
    End non si usa mai, non si deve mai usare, se non in qualche (raro) caso, quando si verifica un'eccezione che compromette la stabilità dell'applicazione ed allora non c'è via di uscita, ma comunque va testata e gestita.
    In genere, però, la gestione degli errori dovrebbe essere più che sufficiente a risolvere ogni problematica.

    Purtroppo End viene spesso usato a sproposito, e non è intercettabile perché End 'sega' l'applicazione, e per questo non consente alla stessa di chiudersi correttamente, lasciando, oltre alla memoria occupata, ulteriori ed inaspettati strascichi.
    Esempio: la prima volta che la usai (inconsapevolmente) quando chiudevo l'applicazione mi generava un errore di un componente di terze parti. Chiesi all'autore per email e lui, senza chiedermi tante spiegazioni mi rispose:
    Non usare End
    N.B. Io non gli avevo detto che la usavo.

  4. #4
    Ieri quando ho tolto l'"End"... mi era venuto un dubbio simile, anche perché leggevo che l'evento shotdown veniva generato dalla chiusura del form, quindi ho pensato che il form non veniva chiuso correttamente.
    Ti ringrazio per la delucidazione, adesso ne ho la certezza; me lo porto dietro, mi sa, da quando ho iniziato a programmare in Visual Basic quell'"End", pensando che così sicuro chiudevo tutto XD, poi ero abituato all'"End." per chiudere un programma in Turbo Pascal, probabilmente l'ho visto utilizzare da altri all'inizio, mi sa, anche dalla risposta che ti diede l'autore del componente di terze parti, che è un errore un po' comune quell'"End" XD

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,041
    Purtroppo sì, è molto comune.
    Ma la colpa è tutta di Microsoft che non ha mai spiegato 'decentemente' i pericoli dell'istruzione End.

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2017 vBulletin Solutions, Inc. All rights reserved.