Ciao vuott!
Un primo reale problema che riscontro è la sollevazione di un "Warning", e più precisamente il seguente:
gbx3 [5476]: warning: circular references detected:
gbx3: 2 DBusConnection
Si, questo è esattamente il motivo per cui si vuole evitare di usare la "Quit" nei programmi grafici.
O almeno credo, nel senso che, per quanto uno cerchi di deallocare tutto quello che ha allocato, ci sono sempre questi warning all'uscita con Quit. Io non sono mai riuscito ad evitarli, perlomeno.
Per eliminare questo avviso, ho dovuto eliminare la sub-routine:
Public Sub Form_Close()
TrayIcon1.Delete
End
e far distruggere l'Oggetto "TrayIcon1" con la modalità - che tempo fa Gianluigi ci ha insegnato a fare per qualsiasi Oggetto si tratti - assegnandogli il valore "Null".
In questo caso più precisamente:
Public Function DoSomething(i As Integer) As Boolean
If i = 4 Then
TrayIcon1 = Null <=======
Me.close
Return True
Endif
Return False
End
Mmm, si ok così funzionerà anche ma non è ottimale. Non funziona allo stesso modo se invece l'istruzione
TrayIcon1 = Null
la metti nella Form_Close()? (Non ho provato, più tardi lo faccio)
Rimane poi il problema degli altri warning.
Per ottenere un'uscita "pulita", dopo aver attivato il Componente "gb.signal", devo impostare la sub-routine come segue:
Public Function DoSomething(i As Integer) As Boolean
If i = 4 Then
Signal.Send(Application.Handle, Signal.SIGKILL)
Return True
Endif
Return False
End
Tale soluzione impedirà al programma di proseguire oltre tale riga del "Signal.Send()".
Si ok, ma così stai dicendo al sistema operativo di killare il tuo stesso programma. Eviterà anche i warning, ma non lo chiamerei un'scita "pulita".
In ogni caso, il punto che qui volevo sollevare è che l'indicazione di usare la chiusura della form principale come metodo di uscita non funziona. O almeno non funziona sempre.
Credo che questa sia una mancanza piuttosto grave, a cui si dovrebbe trovare un rimedio più "architetturale" (==> Benoit?).
E poi: perché quando faccio click sul pulsante di chiusura il programma esce senza warning, mentre quando esco con Quit dopo aver chiuso la form principale ho dei warning? Alla fine, il codice di deallocazione che viene eseguito è lo stesso.
Ciao
Cris