alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
Buongiorno, scusatemi per la domanda forse banale.
Girando per i vari forum del web su vb.net... ho notato che per la chiusura di un form CHILD di un form MDI, alcuni propongono di utilizzare nel form CHILD l'istruzione
Codice sorgente - presumibilmente Plain Text |
, altri
Codice sorgente - presumibilmente Plain Text |
.
Mi sapreste dire in cosa consiste la differenza e quale delle due sia più opportuna?
Grazie |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
Close, chiude l'oggetto ma non libera le risorse, e l'oggetto può essere riaperto.
Dispose, chiude l'oggetto e libera le risorse, l'oggetto non può essere riaperto, deve essere ricreato.
metti un Button1 in Form1 e prova questo codice con Close:
Codice sorgente - presumibilmente VB.NET |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Me.Text = "Close" : Me.Refresh() System.Threading.Thread.Sleep(2000) End Sub End Class
|
Quando clicchi Button1, nella barra del titolo appare Close e dopo due secondi il form si chiude.
se cambi Close con Dispose:
Codice sorgente - presumibilmente VB.NET |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Me.Dispose() End Sub Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Me.Text = "Close" : Me.Refresh() System.Threading.Thread.Sleep(2000) End Sub End Class
|
il Form si chiude immediatamente, perché distrutto da Dispose. Ultima modifica effettuata da Carlo il 08/05/2020 alle 14:04
in programmazione tutto è permesso |
|
alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
Grazie
|
|
alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
Postato originariamente da Carlo:
Close, chiude l'oggetto ma non libera le risorse, e l'oggetto può essere riaperto.
Dispose, chiude l'oggetto e libera le risorse, l'oggetto non può essere riaperto, deve essere ricreato.
metti un Button1 in Form1 e prova questo codice con Close:
Codice sorgente - presumibilmente VB.NET |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Me.Close() End Sub Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Me.Text = "Close" : Me.Refresh() System.Threading.Thread.Sleep(2000) End Sub End Class
|
nella barra del titolo appare Close e dopo due secondi il form si chiude.
se cambi Close con Dispose:
Codice sorgente - presumibilmente VB.NET |
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Me.Dispose() End Sub Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing Me.Text = "Close" : Me.Refresh() System.Threading.Thread.Sleep(2000) End Sub End Class
|
il Form si chiude immediatamente, perché distrutto da Dispose. |
Vale anche quando si usa ad esempio using connection ... o using command dopo end using é bene fare command.dispose e connection.dispose?? visto che entrambi vengono di volta in volta rigenerati?? Grazie |
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
Postato originariamente da alip1:
Vale anche quando si usa ad esempio using connection ... o using command dopo end using é bene fare command.dispose e connection.dispose?? visto che entrambi vengono di volta in volta rigenerati?? Grazie |
Dipende da quando esegui l'istruzione.
END USING, libera tutte le risorse impegnate dall'USING corrispondente.
se fai
Using connection As ....
....
....
....
End Using
' non potrai fare in coda
connection.Dispose()
perché l'oggetto connection non esiste più. Ultima modifica effettuata da Carlo il 08/05/2020 alle 14:26
in programmazione tutto è permesso |
|
alip1 (Normal User)
Pro
Messaggi: 139
Iscritto: 12/08/2019
|
Grazie
|
|