|
Hi all, I am querying an SqlCe Database on my PDA and noticed that the device is slowly running out of memory every time I execute a query. I am using the following code:
public SqlCeDataReader ExecuteReader(string command, params SqlCeParameter[] commandParameters) { SqlCeDataReader reader = null; SqlCeCommand c = new SqlCeCommand(command, cn); try { for (int i = 0; i < commandParameters.Length; i++) c.Parameters.Add(commandParameters ); reader = c.ExecuteReader(); } catch { // Release resources c.Parameters.Clear(); reader.Close(); throw; } c.Parameters.Clear(); return reader; }
This method is a part of my 'SqlCeHelper' class that I have written.
I noticed that when I reach the line reader = c.ExecuteReader() , the memory of my device decreases by about 1%. The reader is returned to a class which makes use of it and then disposes of it by calling reader.Close(); The connection to the database is also closed properly at some point, but memory never gets released. Memory gets only released when the application terminates.
I am wondering if I am doing something wrong by not disposing of some resources. Please help!
(Also tried GC.Collect() , didn't help!)
Cheers.
Miroslav |