Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
ViewState e Datatable
martedì 17 marzo 2009 - 21.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lluberti
Profilo
| Newbie
4
messaggi | Data Invio:
mar 17 mar 2009 - 21:31
Salve a tutti,
in una web application utilizzo il viewstate per memorizzare informazioni all'interno di una datatable che mi permettono di creare dinamicamente la pagina web tra un postback e l'altro.
E' una maniera corretta di procedere ?
Il dubbio mi viene perchè in questo modo, quando l'utente passa ad un'altra pagina non ho la possibilità di effettuare il dispose della datatable.
Questo può provocare un memory leak?
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 18 mar 2009 - 12:30
>Salve a tutti,
Ciao!
>in una web application utilizzo il viewstate per memorizzare
>informazioni all'interno di una datatable che mi permettono di
>creare dinamicamente la pagina web tra un postback e l'altro.
>E' una maniera corretta di procedere ?
Puoi pensare di non mettere nel viewstate, ma di usare il caching integrato in asp.net.
Ma questo se la datatable la leggi da una risorsa esterna (vedi database, file di testo, xml, ecc).
In poche parole puoi farti un metodo statico che controlla se il datatable esiste già nella cache locale. In caso positivo usi quello, altrimenti fai la "query" per ricavare una nuova versione dell'oggetto.
>Il dubbio mi viene perchè in questo modo, quando l'utente passa
>ad un'altra pagina non ho la possibilità di effettuare il dispose
>della datatable.
>Questo può provocare un memory leak?
Beh, avendolo scritto nel viewstate, la dispose puoi farla dopo averlo memorizzato nel viewstate
Comunque qui il link per capire il caching di asp.net
http://msdn.microsoft.com/it-it/library/xsbfdd8c
(VS.80).aspx
>Grazie
di nulla!
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lluberti
Profilo
| Newbie
4
messaggi | Data Invio:
gio 19 mar 2009 - 00:06
Grazie molte !!!
Sei stato preziosissimo!
lluberti
Profilo
| Newbie
4
messaggi | Data Invio:
lun 23 mar 2009 - 17:44
Scusa io nel mio codice il viewstate lo gestisco in questa maniera
private DataTable myTabella {
get {
object o = ViewState["myData"];
return (DataTable)o;
}
set {
ViewState["myData"] = value;
}
}
Ho notato che nel set mi ci va solo quando assegno qualcosa alla datatable .
Dove lo dovrei maettere il dispose ? nel set subito dopo il ViewState["myData"] = value ?
Grazie
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mar 24 mar 2009 - 21:57
>Ho notato che nel set mi ci va solo quando assegno qualcosa alla
>datatable .
>Dove lo dovrei maettere il dispose ? nel set subito dopo il
>ViewState["myData"] = value ?
usa la using, che ti gestisce il rilascio della memoria:
Istruzione using (c#)
http://msdn.microsoft.com/it-it/library/yh598w02
(VS.80).aspx
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
lluberti
Profilo
| Newbie
4
messaggi | Data Invio:
mar 24 mar 2009 - 23:35
Scusa se ti assillo ma credo di non essere stato abbastanza chiaro.
Cerco di spiegarmi meglio:
Nella classe webform ho dichiarato questa proprietà
private DataTable myTabella {
get {
object o = ViewState["myData"];
return (DataTable)o;
}
set {
ViewState["myData"] = value;
}
}
poi nei vari metodi della webform utilizzo la datatable myTabella per salvarmi delle informazioni (aggiungo rows, modifico rows etc).
Ora io non posso mai fare il dispose di myTabella perchè le informazioni che ci scrivo me le passo tra un postback e l'altro.
Ho il sospetto che questa gestione causi una perdita di memoria. Potrebbe essere ??
Se si quali sono le correzioni che dovrei fare secondo te per evitare ciò ?
Grazie per la pazienza
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 25 mar 2009 - 11:32
>Ora io non posso mai fare il dispose di myTabella perchè le informazioni
>che ci scrivo me le passo tra un postback e l'altro.
ma tra un postback e l'altro, le passi sul viewstate, la data
>Ho il sospetto che questa gestione causi una perdita di memoria.
>Potrebbe essere ??
>Se si quali sono le correzioni che dovrei fare secondo te per
>evitare ciò ?
Se tu leggi ad ogni postback dal viewstate e scrivi sul viewstate prima del postback, usa la using per il tuo datatable che ti fa il dispose in automatico, così eviti perdite di memoria
.
--
Alessandro Alpi | SQL Server MVP
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
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 !