Hi,
I´m having a wear problem with an application. When I start the application the memory start to grow and never stops. I´m entering to this routine many times
class ImageDatabaseHandler
{
private bool blDBResult = true;
private string strResultCode = "3009";
string query = "";
readonly ConnectionString connString = new ConnectionString();
public string StrResultCode
{
get { return strResultCode; }
set { strResultCode = value; }
}
public bool getNextFingerprintMinutia(Int64 intThisID, out Int64 intNextID, out string strMinutia/*, OracleConnection myConnection*/)
{
intNextID = 0;
strMinutia = "";
OracleConnection myConnection;
using (myConnection = connString.GetMyConnection())
{
query = string.Format("Select * From (Select * from VCS_IMAGE Where IMAGE_ID > '{0}' and IMAGE_FORMAT = 5005 order by IMAGE_ID ASC) where ROWNUM <=1", intThisID);
using (OracleCommand myCommand = new OracleCommand(query, myConnection))
{
try
{
myConnection.Open();
using (OracleDataReader reader = myCommand.ExecuteReader())
{
blDBResult = reader.Read();
// Read did not cause an exception, blDBResult will contain the Read status (true or false)
if (blDBResult)
{
try
{
intNextID = (Int64)reader["IMAGE_ID"];
}
catch (InvalidCastException)
{
intNextID = -1;
}
try
{
using (OracleClob myOracleClob =reader.GetOracleClob(7))
{
strMinutia = myOracleClob.Value;
myOracleClob.Close();
}
//myOracleClob.Dispose();
}
catch (Exception )
{
strResultCode = "3053";
blDBResult = false;
}
}
reader.Close();
}
myConnection.Close();
}
catch (Exception)
{
blDBResult = false;
}
finally
{
myConnection.Close(); //Added
myConnection.Dispose();
}
}
}
return blDBResult;
}
}
The connection string routine is:
class ConnectionString
{
private string host = "";
private string port = "";
private string serviceName = "";
private string userId = "";
private string userPassword = "";
private string strConnection;
public string Host
{
get { return host; }
set { host = value; }
}
public string Port
{
get { return port; }
set { port = value; }
}
public string ServiceName
{
get { return serviceName; }
set { serviceName = value; }
}
public string UserId
{
get { return userId; }
set { userId = value; }
}
public string UserPassword
{
get { return userPassword; }
set { userPassword = value; }
}
private OracleConnection myConnection = null;
//OracleConnection myConnection = new OracleConnection(strConnection);
public OracleConnection GetMyConnection()
{
using (StreamReader objReader = new StreamReader("c:\\cc17v.cfg"))
{
host = objReader.ReadLine();
port = objReader.ReadLine();
serviceName = objReader.ReadLine();
userId = objReader.ReadLine();
userPassword = objReader.ReadLine();
objReader.Close();
objReader.Dispose();
}
strConnection = string.Format("Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1})))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME={2})));User Id = {3};Password = {4}; ", host, port, serviceName, userId, userPassword);
myConnection = new OracleConnection(strConnection);
myConnection.Close();
return myConnection;
} // Connect to the DB
//}
}
I´ll appreciate any help you can give me. I don´t know if it´s the way how I´m creating the objects for connection, adapter or reader, aparently those are not been disposed propertly.
The Idea of this application is to run it for long time and I mean long time processing so the memory should be constant in order to keep runing otherwise it´ll get a leak of memory.
thanks a lot.