Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di XBarboX
    Registrato dal
    Dec 2008
    Messaggi
    121

    [VB 6.0]Come chiudere programma se già aperto

    salve,
    ho fatto un programma in vb ma ho notato che non si chiude alla fine del processo.
    Devo fare in modo che se l'applicazione è già aperta si chiuda.
    Io ho scritto così ma non va:

    codice:
    Sub Main()
       If App.PrevInstance Then   ' If already running, end the application.
          Unload Me
       End If
    End Sub

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Ma la

    Unload Me

    la scrivi nella Sub Main?

    Semmai in un form ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ho fatto un programma in vb ma ho notato che non si chiude alla fine del processo.
    questo è un'altro problema....

    questo codice:
    codice:
    Sub Main()
       If App.PrevInstance Then   ' If already running, end the application.
          Unload Me
       End If
    End Sub
    per quanto sbagliato possa essere .... non c'entra con la risoluzione del tuo problema.

  4. #4
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    codice:
    Private Sub Form_Unload(Cancel As Integer)
    
    If Forms.Count > 1 Then ScaricaTutteLeForm
        
    End Sub
    codice:
    Private Sub ScaricaTutteLeForm()
    
    Dim frm As Form
    For Each frm In Forms
        If Not frm.Name = Me.Name Then Unload frm
    Next frm
    
    End Sub

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    203

    Re: [VB 6.0]Come chiudere programma se già aperto

    Originariamente inviato da XBarboX
    salve,
    ho fatto un programma in vb ma ho notato che non si chiude alla fine del processo.
    Devo fare in modo che se l'applicazione è già aperta si chiuda.
    Io ho scritto così ma non va:

    codice:
    Sub Main()
       If App.PrevInstance Then   ' If already running, end the application.
          Unload Me
       End If
    End Sub
    sostituisci Unload Me con End

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: Re: [VB 6.0]Come chiudere programma se già aperto

    Originariamente inviato da S0nic
    sostituisci Unload Me con End
    Ma che bel consiglio!!!

    Io invece consiglio un approfondimento serio sulle conseguenze negative dell'uso di End, perchè peggior consiglio di questo non potevi dare.


  7. #7
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    anche a me itneressa questa cosa dell'End, non riesco a trovare niente su google che spiega i problemi di questo comando

  8. #8
    Al contrario di Unload, End non rilascia le risorse allocate dal form

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Originariamente inviato da StegcO
    anche a me itneressa questa cosa dell'End, non riesco a trovare niente su google che spiega i problemi di questo comando
    L'istruzione End interrompe di brutto l'applicazione, quindi tutti gli oggetti istanziati dell'applicazione (non solo del form) non vengono rilasciati, e spesso e volentieri questo può generare un'errore alla chiusura dell'applicazione una volta compilata, senza conoscere il perchè avvenga.
    Di norma questo non avviene quando si esegue il progetto dall'IDE di Visual Basic 6.0, in quanto VB stesso ha dei meccanismi interni che controllano eventuali errori e li risolvono in uscita, a meno che non sia attiva una routine di subclassing che in caso di errore di programmazione blocca inesorabilmente l'esecuzione, ed a quel punto non resta che annientare il processo VB.EXE.

    Oltre a questo, ogni volta che il programma viene eseguito mantiene inutilmente occupata una quantità di memoria, che quindi non è più disponibile per il sistema.
    Se esegui 5 volte il programma (EXE) e questo ogni chiusura mantiene 100kb di memoria occupata, alla fine avrai 500kb di memoria non più disponile.

    Da specificare che questo comportamento può peggiorare con s.o. meno tolleranti come Vista e Seven, quindi End non è una soluzione, semmai aggiunge un problema al problema già esistente.

    Se l'applicazione non si chiude correttamente, bisogna andare alla ricerca del perchè, qual'è l'errore che causa questo comportamento perchè, e su questo non c'è alcun dubbio, solo un errore di programmazione causa il malfunzionamento dell'applicazione.
    E se non si correggono gli errori, non si sa più cosa può accadere in futuro.

    Ecco perchè l'uso di End è sinonimo di cattiva programmazione.

    Invece, occorre tirarsi su le maniche ed ispezionare l'esecuzione del codice passo-passo, e l'errore si trova, sempre.


  10. #10
    Utente di HTML.it L'avatar di StegcO
    Registrato dal
    Aug 2008
    Messaggi
    371
    ottima spiegqazione, grazie

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 © 2025 vBulletin Solutions, Inc. All rights reserved.