nikos123:Το datatable είναι fully managed, συνεπώς δεν χρειάζεται dispose.
Δεν έχει καμμία σημασία αν κάποια κλάση χρησιμοποιεί μόνο Managed resources ή όχι, για το αν χρειάζεται το Dispose. Από τη στιγμή που μία κλάση υλοποιεί το IDisposable interface, σου λέει ότι ΧΡΕΙΑΖΕΤΑΙ να κάνεις Dispose διαφορετικά κάποια ακριβά resources θα δεσμευτούν για περισσότερη ώρα απ' ότι χρειάζεται. Γι αυτό και ο compiler ειδοποιεί ότι υπάρχει ένα αντικείμενο, το οποίο έχει ειδοποιήσει ότι χρειάζεται Dispose, το οποίο όμως αφήνεται στην τύχη του.
Το .NET κάποια στιγμή θα εκτελέσει ένα garbage collection και θα μαζέψει το περιττό datatable, μέχρι εκείνη τη στιγμή όμως, το DataTable θα παραμένει στη μνήμη.
Ειδικά για το DataTable, αξίζει
αυτή η απάντηση στο StackOverflow που εξηγεί για ποιό λόγο το DataTable απαιτεί την Dispose.
Όσον αφορά τον ίδιο τον κώδικα, το warning ειδοποιεί για ένα άλλο πρόβλημα. Η παρακάτω γραμμή:
DataTable insdt = new DataTable();
insdt = resultGV.DataSource as DataTable;
δημιουργεί ένα DataTable και ΑΜΕΣΩΣ το πετάει, για να το αντικαταστήσει με ένα άλλο. Προφανώς, το πρώτο DataTable δεν γίνεται ποτέ Dispose.
Θα έπρεπε να είναι
DataTable insdt ;
insdt = resultGV.DataSource as DataTable;
ή ακόμα καλύτερα
DataTable insdt =resultGV.DataSource as DataTable;
Μήπως ο αρχικός κώδικας ήταν γραμμένος σε VB.NET? Εκεί μία μεταβλητή ορίζεται ως
Dim insdt As DataTable
οπότε μπορεί κάποιος να έβαλε κατά λάθος ένα New, μετά να έγινε το cast κλπ κλπ. Ακόμα και στην VB.NET όμως μπορείς να γράψεις σωστά την ίδια γραμμή:
Dim insdt As DataTable= CType(resultGV.DataSource,DataTable)
Τέλος, το συγκεκριμένο cast θέλει λίγη προσοχή, καθώς το as επιστρέφει null αν αποτύχει το cast. Το αποτέλεσμα θα είναι να σκάσει ο κώδικας όταν θα προσπαθήσει να γράψει στο server.
Είναι προτιμότερο αντί για as να χρησιμοποιηθεί το παρακάτω:
DataTable insdt=(DataTable)resultGV.DataSource;
Το οποίο θα σκάσει λέγοντας ξεκάθαρα ότι το DataSource δεν είναι DataTable.
Εναλλακτικά θα πρέπει να μπει έλεγχος ότι το insdt δεν είναι null και να μην προχωρήσει το Bulk Import
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos