2010-05-10 8 views
1

Qu'arrive-t-il à un ensemble de données lorsque vous avez fini de l'utiliser. Par exemple, si je crée et remplis un ensemble de données pour une grille, quand l'utilisateur quitte cette page ou se déconnecte, je suppose que l'ensemble de données est toujours en mémoire?Ensembles de données saisies ASP.Net durée de vie

Chaque utilisateur obtient-il sa propre instance de l'ensemble de données? En d'autres termes, si 2 utilisateurs frappent la même page qui utilise une grille, chacun d'eux sert-il sa propre instance de l'ensemble de données à partir de la mémoire du serveur?

Répondre

3

Si vous ne le placez pas dans le cache de session ou d'application, il sera collecté dès que la page sera affichée.

ASP.NET est sans état, et à moins que vous utilisez session ou le cache, ou avoir comme une méthode statique, il est hors de portée le plus tôt possible.

Exemple, si vous avez ce qui suit dans le chargement de la page.

DataSet myDataset = new DataSet(); 
//Do stuff here to fill 
dgrMyGrid.DataSource = myDataset; 
dgrMyGrid.DataBind(); 

À la fin de cet appel de méthode, le jeu de données myDataset est prêt pour la récupération de place.

+0

Qu'en est-il dans les situations où vous avez une grille de données avec pagination et tri activé? Lorsqu'une colonne est triée, la requête retourne au serveur pour récupérer l'ensemble de données avec le tri appliqué. On dirait que si l'ensemble de données était admissible à la collecte après le chargement de la page, il pourrait éventuellement être parti de la mémoire lorsque cette demande de tri frappe le serveur. Il me manque quelque chose? – JBeckton

+0

Vous devez récupérer les données du magasin de données si elles n'ont pas été stockées dans une session ou dans un autre emplacement. Pour vous donner une réponse complète, nous aurions besoin de voir du code pour souligner un peu plus le processus. –

+0

Dans le cas de contrôles liés aux données, il semble que cela est géré pour vous correct? – JBeckton

0

Il est en mémoire jusqu'à ce qu'il soit collecté. Il est collecté lorsque le garbage collector démarre (en raison de la pression de la mémoire) et qu'il est dû pour la collecte. Lisez sur le collecteur de déchets dans la documentation.

0

Je suppose que le ramasse-miettes récupérer la mémoire lorsque le pool d'applications est ma réponse réutilise pour la première question. En ce qui concerne la deuxième question, cela dépend de la manière dont vous configurez les choses. En utilisant l'objet Application, vous pouvez passer l'ensemble de données entre les utilisateurs, afin qu'ils puissent voir les mêmes données ou vous pouvez le structurer pour que chacun ait sa propre copie des données.

Questions connexes