Oppure

Loading
08/05/20 8:44
alip1
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
me.close
, altri
me.dispose
.

Mi sapreste dire in cosa consiste la differenza e quale delle due sia più opportuna?

Grazie
aaa
08/05/20 9:42
nessuno
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à.
08/05/20 11:37
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:

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:

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 08/05/20 12:04
in programmazione tutto è permesso
08/05/20 11:56
alip1
Grazie
aaa
08/05/20 12:00
alip1
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:

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:

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
aaa
08/05/20 12:20
Carlo
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 08/05/20 12:26
in programmazione tutto è permesso
13/05/20 16:42
alip1
Grazie
aaa