Consiglio sul metodo dispose

giovedì 09 febbraio 2006 - 10.21

trinity Profilo | Guru

ragazzi,
io ho il seguente codice:

If MessageBox.Show("Eliminare il codice selezionato?", "INVOICE.NET", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
sql = "Delete From listini Where id=" & Me.ListView1.SelectedItems(0).Text & ""
cmd.Connection = db
cmd.CommandText = sql
cmd.CommandType = CommandType.Text
cmd.ExecuteNonQuery()
cmd.Dispose()
'****caricamento progressivo fattura
sql = "SELECT MAX(id) as massimo FROM listini"
cmd.Connection = db
cmd.CommandText = sql
cmd.CommandType = CommandType.Text
dr = cmd.ExecuteReader
If dr.Read() Then
Try
Me.Label1.Text = Format(dr.GetSqlInt32(0).Value + 1)
Catch
Me.Label1.Text = "1"
End Try
End If
dr.Close()
cmd.Dispose()
end if

la mia domanda è la seguente il metodo dispose che applico sulla command è meglio utilizzarlo ogni volta che utilizoz la command come faccio sopra all'interno dell'evento oppure basta utilizzare il dispose solo alla fine di tutto il codice quindi di solito alla fine dell'evento? come segue:

If MessageBox.Show("Eliminare il codice selezionato?", "INVOICE.NET", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes Then
sql = "Delete From listini Where id=" & Me.ListView1.SelectedItems(0).Text & ""
cmd.Connection = db
cmd.CommandText = sql
cmd.CommandType = CommandType.Text
cmd.ExecuteNonQuery()
'****caricamento progressivo fattura
sql = "SELECT MAX(id) as massimo FROM listini"
cmd.Connection = db
cmd.CommandText = sql
cmd.CommandType = CommandType.Text
dr = cmd.ExecuteReader
If dr.Read() Then
Try
Me.Label1.Text = Format(dr.GetSqlInt32(0).Value + 1)
Catch
Me.Label1.Text = "1"
End Try
End If
dr.Close()
cmd.Dispose()
end if

Ciao
Fabio

Brainkiller Profilo | Guru

>la mia domanda è la seguente il metodo dispose che applico sulla
>command è meglio utilizzarlo ogni volta che utilizoz la command
>come faccio sopra all'interno dell'evento oppure basta utilizzare
>il dispose solo alla fine di tutto il codice quindi di solito
>alla fine dell'evento? come segue:

Generalmente quando pensi di non utilizzarlo più puoi chiamare il Dispose che non è altro che un'indicazione al Garbage Collector che quell'oggetto non verrà più utilizzato in futuro. Ad ogni collection prende tutti quegli oggetti e li elimina.

Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

trinity Profilo | Guru

Ok, ma nei miei programmi ci posso essre i casi che per esempio il Sqlcommand viene utilizzato più volte in un'evento, poi da questo evento si passa ad un'altro e quindi c'è la possibilità che anche nel secondo venga utilizzato l'sqlcommand...a questo punto 2 sono le cose e eventualmente consigliami te David:

1 richiamo il metodo dispose al termine della sub evento oppure al termine di una routine ecc?

oppure

2 richiamo il metodo dispose alla chiusura della form?

te che faresti?

Ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz

Brainkiller Profilo | Guru

>Ok, ma nei miei programmi ci posso essre i casi che per esempio
>il Sqlcommand viene utilizzato più volte in un'evento, poi da
>questo evento si passa ad un'altro e quindi c'è la possibilità
>che anche nel secondo venga utilizzato l'sqlcommand...a questo
>punto 2 sono le cose e eventualmente consigliami te David:
>
>1 richiamo il metodo dispose al termine della sub evento oppure
> al termine di una routine ecc?

Ciao Fabio,
puoi usarlo quante volte vuoi, e alla fine della procedura chiamare il metodo Dispose.

ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

trinity Profilo | Guru

Ok...quindi a questo punto mi conviene fare così:

per esempio in un evento Button_Click.....

eseguo tutto il codice scritto...utilizzando per tutte le volte che mi server l'SqlCommand e poi al termine di tutto il codice e quindi alla fine dell'evento (in altre parole) richiamo il metodo Dispode..in sostanza una solo volta lo chiamo ma alla fine di tutto il codice..

Ciao

Cirillo Fabio
www.wondernet.biz
fabio@wondernet.biz

Brainkiller Profilo | Guru

il codice scritto...utilizzando per tutte le volte
>che mi server l'SqlCommand e poi al termine di tutto il codice
>e quindi alla fine dell'evento (in altre parole) richiamo il
>metodo Dispode..in sostanza una solo volta lo chiamo ma alla
> fine di tutto il codice..

Esatto.


David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5