2011-04-30 2 views
0

J'ai un DataSet nommé dS dans lequel je veux charger du XML.Variable variable déclarée sans nom (juste un nouveau mot-clé)

donc j'utiliser la fonction dS.ReadXml();

Le paramter pour ReadXml fonction est XmlTextReader objet.

Si je passe objet comme

ds.ReadXml(new XmlTextReader(Application.StartupPath + "\\MyDataSource.xml")); 

l'ensemble de données sera chargé. Mais plus tard, je veux fermer cet objet XmlTextReader. Bien que je ne l'ai pas déclaré avec un nom comme

XmlTextReader reader = new XmlTextReader(somepath); 

Comment puis-je fermer le lecteur ???

+0

vous avez déjà répondu: avec une variable :) –

Répondre

2

Vous aurez besoin d'utiliser une variable, sinon vous ne pouvez pas y accéder.

Et pendant que vous y êtes, utilisez l'instruction using:

string path = Path.Combine(Application.StartupPath, "MyDataSource.xml")); 
using (var reader = new XmlTextTreader(path)) 
{ 
    ds.ReadXml(reader); 
} 

La déclaration appelle automatiquement usingDispose sur reader lors de la sortie du champ d'application de la déclaration using.

Remarque: Vous devez utiliser Path.Combine au lieu de concaténer le chemin vous-même. Cela vous évite beaucoup de problèmes.

0

L'objet XmlTextReader est utilisé par l'objet DataSet , ce qui explique pourquoi il ne le ramasse-miettes.

Maintenant, si vous pensez, cela signifie que l'objet DataSet contrôle l'objet XmlTextReader *.

La meilleure façon est d'appeler:

ds.Dispose() 

Cela entraînera l'objet DataSet pour libérer ses ressources dont il XmlTextReader * objet.

Questions connexes