Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1

    VB2008 - Application.Exit()

    Application.Exit() non dovrebbe chiudere l' applicazione corrente?

    in una routine di controllo ho inserito il codice

    If ............ then
    .....................
    Application.Exit()
    End If

    poiché anche se il codice viene letto l' applicazione non si chiude, ho inserito l' istruzione direttamente nella Sub frmMain_ Load, dove frmMain è il form di startup

    niente, l' istruzione viene bypassata, non funge

    ma non è l' istruzione per eccellenza per far sì che una applicazione si chiuda?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Infatti l'applicazione si chiude ... probabilmente la If non viene soddisfatta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3

    Re: VB2008 - Application.Exit()

    Originariamente inviato da eziogsv
    Application.Exit() non dovrebbe chiudere l' applicazione corrente?

    in una routine di controllo ho inserito il codice

    If ............ then
    .....................
    Application.Exit()
    End If

    poiché anche se il codice viene letto l' applicazione non si chiude, ho inserito l' istruzione direttamente nella Sub frmMain_ Load, dove frmMain è il form di startup

    niente, l' istruzione viene bypassata, non funge
    Per caso hai fatto cose strane con thread, dialog box, ... ?
    ma non è l' istruzione per eccellenza per far sì che una applicazione si chiuda?
    No, Application.Exit() serve per fermare tutte le message pump, il che per la maggior parte delle applicazioni Windows Forms significa uscire, ma questo non è necessariamente vero in tutti i casi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Originariamente inviato da oregon
    Infatti l'applicazione si chiude ... probabilmente la If non viene soddisfatta ...
    no, no, viene soddisfatta

    ad ulteriore controllo in effetti l' applicazione viene chiusa, ma solo DOPO avere eseguito tutti i cicli possibili e immaginabili

    cioè, nella mia sub form_load mando numerose Call ad altre sub di controllo ed elaborazione... anche se metto la Application.Exit() come prima istruzione, il codice si legge PRIMA tutte le sub e solo quando ha letto TUTTO il codice del form di avvio l' applicazione si chiude

    e visto che il ciclo di controllo

    if... then Application.Exit()

    è nella prima Call, viene letta anche la seconda Call, che va in errore proprio perché mancano dei dati, come avevo controllato in precedenza... l' applicazione va chiusa prima di leggere la seconda Call, ma evidentemente non con un Application.Exit()

  5. #5

    Re: Re: VB2008 - Application.Exit()

    come detto nel messaggio precedente, in effetti Application.Exit() chiude l' applicazione, ma solo DOPO aver letto tutto il codice da leggere, anche quello che non dovrebbe leggere perchè a seguito di un controllo noto che manca qualcosa e vorrei chiudere il programma prima

    quindi Application.Exit() chiude il programma, ma non immediatamente dopo l' istruzione, come a mio parere dovrebbe essere

    mi sa che per chiudere subito ricorrerò al vecchio caro ciclo che chiude tutti i form aperti e poi ci piazzo un bell' END tanto per gradire...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466

    Re: Re: Re: VB2008 - Application.Exit()

    Originariamente inviato da eziogsv
    come detto nel messaggio precedente, in effetti Application.Exit() chiude l' applicazione, ma solo DOPO aver letto tutto il codice da leggere
    Non si capisce cosa intendi (specialmente se non mostri tutto il codice di cui parli ...).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7

    Re: Re: Re: Re: VB2008 - Application.Exit()

    Originariamente inviato da oregon
    Non si capisce cosa intendi (specialmente se non mostri tutto il codice di cui parli ...).
    dopo ricerca sul web (tu giustamente dirai che potevo anche farla prima):

    System.Windows.Forms.Application.Exit() - Informs all message pumps that they must terminate, and then closes all application windows after the messages have been processed. This method stops all running message loops on all threads and closes all windows of the application. This method does not force the application to exit.

    quello che stavo cercandi di dire: Application.Exit() chiude l' applicazione, ma solo dopo avere processato tutto quello che il codice ha da processare

    io voglio chiudere l' applicazione SUBITO, appena verificato un problema.

    ho adesso notato che System.Environment.Exit(1) chiude l' applicazione SUBITO

    è una istruzione che non conosco: per un lavoro pulito meglio quella o meglio chiudere i form con un form.close() e poi un bell' END?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Prima di decidere che strada prendere, chiarisci se

    1) l'applicazione, se e' il caso, deve essere chiusa durante la Form_Load ?

    2) se e' cosi', cosa c'è nella Form_Load ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Originariamente inviato da eziogsv
    no, no, viene soddisfatta

    ad ulteriore controllo in effetti l' applicazione viene chiusa, ma solo DOPO avere eseguito tutti i cicli possibili e immaginabili

    cioè, nella mia sub form_load mando numerose Call ad altre sub di controllo ed elaborazione... anche se metto la Application.Exit() come prima istruzione, il codice si legge PRIMA tutte le sub e solo quando ha letto TUTTO il codice del form di avvio l' applicazione si chiude
    Questo è normale: Application.Exit() corrisponde a una PostQuitMessage su tutti i thread; il messaggio WM_QUIT viene messo nella coda dei messaggi, per cui tutti i messaggi (compreso il WM_CREATE che si sta eseguendo in questo momento) vengono processati, e solo dopo la message pump si ferma.
    e visto che il ciclo di controllo

    if... then Application.Exit()

    è nella prima Call, viene letta anche la seconda Call, che va in errore proprio perché mancano dei dati, come avevo controllato in precedenza... l' applicazione va chiusa prima di leggere la seconda Call, ma evidentemente non con un Application.Exit()
    Prova a mettere un Me.Close(), eventualmente un Application.Exit() (se hai altri form aperti) e quindi un Return.
    ho adesso notato che System.Environment.Exit(1) chiude l' applicazione SUBITO
    è una istruzione che non conosco: per un lavoro pulito meglio quella o meglio chiudere i form con un form.close() e poi un bell' END?
    Il metodo in questione mi pare che corrisponda ad una ExitProcess (così come End), che non so se sia una soluzione pulitissima.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da MItaly

    Il metodo in questione mi pare che corrisponda ad una ExitProcess (così come End), che non so se sia una soluzione pulitissima.
    Non direi ...

    "The End statement stops code execution abruptly, and does not invoke the Dispose or Finalize method, or any other Visual Basic code. Object references held by other programs are invalidated. If an End statement is encountered within a Try or Catch block, control does not pass to the corresponding Finally block."

    e anche

    "The End statement calls the Exit method of the Environment class in the System namespace. Exit requires that you have UnmanagedCode permission. If you do not, a SecurityException error occurs."
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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