2010-08-11 12 views
3

Simple Question. Est-il important d'utiliser l'instruction using lorsque vous travaillez avec des adaptateurs de table de jeu de données typés? La plupart des exemples que j'ai vus sur le net n'utilisent jamais l'instruction using.Utilisation de la déclaration "Using" avec des adaptateurs de table de fichiers typés

using (Data_ItemTableAdapter adapter = new Data_ItemTableAdapter()) 
{ 

    DataItemTable = a.GetDataByDataItemID(DataItemID); 
    // more code here 
} 

Merci pour votre aide !! Edit: On dirait que le consensus général est que c'est probablement une bonne idée d'utiliser "using" dans cette situation, car cela ne ferait certainement pas de mal, et cela ne demande pas beaucoup d'efforts. Je ne sais pas si cela vaut la peine de revenir sur ce vieux projet et de changer tout le code. Merci pour le conseil!

Répondre

6

Si une classe implémente l'interface IDisposable, il est probablement plus sûr d'envelopper l'objet dans une instruction using ou d'appeler la méthode Dispose manuellement.

Dans ce cas, je ne crois pas que l'adaptateur de données utilise des ressources non-remaniées, donc la disposition ne fait probablement rien de substantiel. Cependant, il serait plus sûr de l'envelopper parce que dans l'avenir, il le pourrait.

2

Ce n'est pas terrible important dans ce cas particulier, mais de savoir que vous devez plonger profondément dans l'adaptateur.

En général, il ne fait certainement pas de mal si en cas de doute, et si elle a un Dispose(), utilisez using.

4

Si quelque chose implémente IDisposable, je recommande de l'utiliser en utilisant() la plupart du temps. Appel automatique à Dispose() + Try/Finally gratuitement? Difficile à battre.

+1

ajoute beaucoup de lisibilité au code lorsque vous faites cela, aussi, je ne l'ai jamais même commencé à taper le nom d'un objet disposé sous ce style. – marr75

2

Si quelque chose met en œuvre, cela signifie qu'il a probablement implémenté un finaliseur personnalisé. Appeler disposer devrait (si écrit correctement) supprimer le CG de l'appeler. Si le CG doit appeler le finaliseur de la classe, le CG devra faire un travail supplémentaire pour retirer l'objet de la mémoire. Cela va le promouvoir au prochain niveau du CG, donc l'objet restera en mémoire beaucoup plus longtemps.

Donc, même si vous ne pensez pas qu'il est très important de l'appeler, c'est probablement une bonne idée de toute façon, car cela permettra très probablement une récupération de place plus efficace. En vérité, si Dispose est là, il est probablement là pour une raison et devrait être utilisé. Le mettre dans une déclaration using est vraiment la manière la plus facile de manipuler ceci.

Informations sur Finalizers and the GC in .NET