Ich arbeite an einem .NET 3.5-Projekt und wird ein DataSet mit mehreren DataTables und Beziehungen zwischen den DataTables verwenden. Ich werde eine bestimmte Anzahl von Datensätzen aus SQL abrufen, um die DataTables zu füllen und diese Datensätze dann zu verarbeiten. Nachdem ich die Datensätze verarbeitet habe, möchte ich das DataSet löschen und die nächsten Datensätze abrufen. Ich habe gelesen, dass die Clear() - Methode die Zeilen nicht aus dem Speicher löscht. Wie kann ich das DataSet wiederverwenden, ohne dass mein Speicher während der Dauer des Abrufs von Datensätzen weiter ansteigt?Wiederverwendung des gleichen DataSet ohne Speicherprobleme
Antwort
MSDN besagt, dass the DataSet.Clear
method clears the DataSet of any data by removing all rows in all tables.. Es wird alle Tabellen und Beziehungen intakt lassen, aber alle Zeilen löschen.
Wo haben Sie sonst gelesen?
Wenn Sie die Antwort von einem Microsoft-Mitarbeiter unter folgendem Link http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataset/thread/41e1b19a-b5ee-4cf2-ac1e-ff0c9a35b961 lesen, werden Sie sehen, dass er Geben Sie Folgendes an: DataSet.Clear() und DataSet.Dispose() werden die Zeilen nicht durch GC gelöscht. Die Methode .Clear() entfernt alle Datenzeilen in jeder Datentabelle innerhalb des Datasets. Außerdem wird die .Dispose() - Methode von der Basisklasse des DataSet MarshalByValueComonent implementiert, sodass die verwalteten Ressourcen des Datasets nicht freigegeben werden. – user31673
Das heißt, Zeilen sind gelöscht, Metadaten (Tabellen Relationen usw. sind nicht), was gut ist, weil es unwahrscheinlich ist, dass Sie es wollen. Wenn die Metadaten unterschiedlich waren, dann führe sie entweder null aus oder weise sie einem neuen zu –
- 1. Wiederverwendung des .NET-Anwendungssymbols
- 2. Wiederverwendung des IBM.WMQ.MQQueue-Objekts
- 3. Wiederverwendung des Java-Anweisungsobjekts?
- 4. Wiederverwendung der gleichen Tests für andere Implementierung
- 5. Wiederverwendung der gleichen Komponente in ExtJs
- 6. Speicherprobleme mit GraphDB 7.0
- 7. QNetworkAccessManager Speicherprobleme
- 8. Speicherprobleme - Fragmente
- 9. ScrollView Speicherprobleme
- 10. JPA EntityManager große Speicherprobleme
- 11. FindByIdentity in System.DirectoryServices.AccountManagement Speicherprobleme
- 12. Recommenderlab läuft in Speicherprobleme
- 13. Tools zum Organisieren des Dataset-Designers?
- 14. Enumerable.Repeat hat einige Speicherprobleme?
- 15. Heroku Speicherprobleme Puma mit
- 16. Speicherprobleme unter 4.2?
- 17. Speicherprobleme mit kontinuierlich Audio
- 18. Vektor von geteilten Zeigern, Speicherprobleme nach dem Löschen des Vektors
- 19. Wiederverwendung eines Teils des Grails-Kriterienabschlusses
- 20. Wiederverwendung der Initialisierungsmethode beim Aufruf des Basiskonstruktors
- 21. Wiederverwendung der gleichen Tabelle über mehrere Ansichten in Schienen
- 22. OpenGL: Wiederverwendung der gleichen Textur mit verschiedenen Parametern
- 23. Wiederverwendung eines XML in C#
- 24. MKMapView Speicherprobleme in ios7 sdk
- 25. Gibt es Speicherprobleme mit Ext.js
- 26. Speicherprobleme beim Schreiben von MySQL
- 27. Speicherprobleme bei der Verarbeitung großer Textmengen vermeiden
- 28. Wiederverwendung integrierter WPF-Stile
- 29. Aufruf des gleichen Namens Funktion
- 30. Wiederverwendung von Makrovariablen
Ändern Sie einfach Ihre Auswahlkriterien und rufen Sie erneut Fill auf. Sie müssen sich nur mit dem Dataset herumärgern, wenn sich die Tabellen oder Beziehungen ändern, und dann erstellen Sie einfach ein neues Dataset und übergeben es an Ihre Verarbeitungsfunktionen. –
Mein Anliegen hier ist die Erinnerung. Dieser Prozess wird an vielen tausend Datensätzen arbeiten, die für viele Stunden ausgeführt werden. Ich muss sicherstellen, dass der Speicher ordnungsgemäß verwaltet wird. – user31673
Aber sobald DataRow nicht mehr referenziert wird, sollte der GC es loswerden, Clear oder Fill wird das tun. Sieht für mich wie vorzeitige Optimierung aus, finde heraus, ob dein Anliegen gerechtfertigt ist, eine einfache POC Style-Studie wird das tun. –