Risultati da 1 a 7 di 7
  1. #1
    Shogun Assoluto L'avatar di Frykky
    Data Registrazione
    07-10-01
    Località
    Firenze
    Messaggi
    49,744

    Predefinito non mi riesce chiudere la mia applicazione



    ho scritto un'applicazione in vb.net che randomly si chiude ma non si chiude.

    Mi spiego meglio, chiudo il programma dal tasto esci che fa

    Codice:
     DB_StopConn()
            While (Application.OpenForms.Count > 1)
                Application.OpenForms.Item(1).Close()
            End While
    
            For Each p As Process In Process.GetProcesses()
                If p.Id = Process.GetCurrentProcess().Id Then
                    For Each t As ProcessThread In p.Threads
                        t.Dispose()
                    Next
                    p.CloseMainWindow()
                    p.Close()
                End If
            Next
    
            Me.Dispose()
            Me.Close()
            Application.Exit()
    e nonostante ciò, ripeto randomly, aprendo il taskmanager mi rimane un processo in esecuzione (anche se apparentemente il programma è chiuso).

    Il programma è single-thread tranne in un paio di casi però con quel ciclo for credevo di chiuderli tutti...

    Idee?

  2. #2
    Il Niubbi
    Data Registrazione
    01-01-07
    Messaggi
    184

    Predefinito Re: non mi riesce chiudere la mia applicazione

    Forse dico una banalità, ma stai per caso usando delle risorse esterne es. file, Database, Stampanti e cose di questo tipo?
    Se è così hai provato ad usare l'istruzione USING che ti libera la risorsa immediatamente come dice su msdn. Ricordo che VB.NET ha la garbage collector
    non deterministica. Ti invio il link:

    http://msdn.microsoft.com/en-us/library/htd05whh.aspx

    Se non è così mi spiace ma non saprei come aiutarti.

  3. #3
    Il Nonno
    Data Registrazione
    29-07-02
    Messaggi
    4,733

    Predefinito Re: non mi riesce chiudere la mia applicazione

    Anche un uso "scomposto" di risorse unmanaged non può tenere il programma in esecuzione, al massimo impegnare memoria a vuoto.

    Il problema è sicuramente legato agli altri thread che vengono aperti; il .Dispose() probabilmente non è sufficente e serve anche un .Abort() prima.. tra l'altro non riesci a mantenere un elenco dei thread attivi tu a monte, invece che doverlo recuperare al volo dal Process?

  4. #4
    Shogun Assoluto L'avatar di Frykky
    Data Registrazione
    07-10-01
    Località
    Firenze
    Messaggi
    49,744

    Predefinito

    No allora ho usato tutte quelle linee proprio perché non riesco a capire dove sia il problema anche perché non succede sempre e soprattutto non ho capito facendo cosa

    Ora provo con l'abort e vi faccio sapere

  5. #5
    Shogun Assoluto L'avatar di Frykky
    Data Registrazione
    07-10-01
    Località
    Firenze
    Messaggi
    49,744

    Predefinito Re: non mi riesce chiudere la mia applicazione

    non hanno il metodo abort i thread

  6. #6
    Il Nonno
    Data Registrazione
    29-07-02
    Messaggi
    4,733

    Predefinito Re: non mi riesce chiudere la mia applicazione

    Citazione Originariamente Scritto da Frykky Visualizza Messaggio
    non hanno il metodo abort i thread
    Appena controllato: la classe System.Threading.Thread ha sempre avuto il metodo Abort(), già dal framework 1.1
    http://msdn.microsoft.com/en-us/libr...v=vs.100).aspx

    Tu in quel ciclo lassù stai invece referenziando la classe ProcessThread ma sicuramente non è con questo tipo di oggetto che hai avviato i thread quando è stato il momento... altro motivo in più per tenere traccia tu dei thread aperti in primis
    Ultima modifica di LarsenB; 22-10-12 alle 23:12:36

  7. #7
    Marcx
    ospite

    Predefinito

    edit...
    ero dal cell e ho scritto una cagata...
    Ultima modifica di Marcx; 25-10-12 alle 13:00:18

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice HTML è Disattivato