Hallo zusammen,
mit folgendem Code (irgendeines SQLBrokers unseres Frameworks) erzeuge ich eine BindingSource, deren DataTable in einem DataSet liegt, das über "using" angelegt ja eigentlich sofort danach wieder im Nirwana verschwindet:
public BindingSource GetBindingSource(string tableName, string commandText, params object[] parameters)
{
try
{
// Create an adapter and retrieve data
using(SqlDataAdapter dataAdapter = GetDataAdapter(commandText, parameters))
{
using (DataSet dataset = new DataSet())
{
dataAdapter.Fill(dataset, tableName);
return new BindingSource(dataset, tableName);
}
}
}
catch (Exception exc)
{
return null;
}
finally { connection.Close(); }
}
In meiner Anwendung kommt jetzt die BindingSource prima an, ich kann Comboboxen füllen etc. und auch darin navigieren.
Die triviale Frage, die sich mir stellt: wo liegt denn nun die der BindingSource zugrundeliegende Tabelle?
Anders gesagt: Gibt´s das DataSet jetzt in Wirklichkeit noch?
Danke für Eure Hilfe.
Ron
So weit ich weis:
Das DataSet-Objekt gibt es noch, da eine Referenz darauf im BindingSource-Objekt enthalten ist und die GarbageCollection es also nicht entfernt.
(Ich glaube sogar, dass im DataTable-Objekt auch noch eine Referenz existiert.)
Using bedeutet "nur" das Dispose aufgerufen wird, nicht, das das Object selber zerstört wird.
Das ist etwas anderes als free in C.