Bonjour,
Je developpe une application C# avec VS2003 Framework1.1.
Cette application lit en boucle dans une base de données Oracle (client9.2).
Je me suis rendu compte que la mémoire augmentait sans arrêt. (+- 150ko / seconde)
Je suppose que j'oublie de libérer quelque chose!?
Pouvez-vous m'aider?
Merci pour votre aide.
>> NiCoMpX <<
Voici le code de l'application:
/********************************/
/* MAIN */
/********************************/
string sQuery;
object[,] resultat;
classOracle monOracle = new classOracle();
try
{
sQuery = "select MSG_ID, BODY, PROVID, NUMBER_GSM, SHORTCODE, TIMESTAMP, DATESTART from SMS_MO";
if(monOracle.connect())
{
while(true)
{
System.Threading.Thread.Sleep(100); //Pause de 100ms
resultat = monOracle.getQueryResult(sQuery);
resultat = null;
}
monOracle.deconnect();
}
}
catch
{
}
finally
{
monOracle.deconnect();
}
/********************************/
/* classOracle */
/********************************/
/* Fonction de connexion */
publicbool connect()
{
try
{
this.sUser = "******";
this.sPassword = "******";
this.sServeur = "INFOTEC";
this.oracleCnx.ConnectionString = "Password=" + this.sPassword + ";User ID=" + this.sUser + ";Data Source=" + sServeur;
this.iNbCols = 0;
this.iNbRows = 0;
oracleCnx.Open();
returntrue;
}
catch(Exception)
{
Console.WriteLine("Impossible de se connecter à la base de données");
returnfalse;
}
}/* Fonction de lecture */
public Object[,] getQueryResult(string sQuery)
{
this.oracleCmd = new OracleCommand(sQuery, this.oracleCnx);
this.oracleReader = null;
this.oracleReader = this.oracleCmd.ExecuteReader();
Object[,] oArrResult;
this.iNbRows = 0;
this.iNbCols = this.oracleReader.FieldCount; // Initialisation du tableau de retour
while (this.oracleReader.Read()) { this.iNbRows++; }
oArrResult = new Object[this.iNbRows,iNbCols];
// Remplissage du tableau de retour
try
{
this.oracleReader = this.oracleCmd.ExecuteReader();
int i = 0;
while (this.oracleReader.Read())
{
for(int j=0; j<this.iNbCols; j++)
{
oArrResult[i,j] = oracleReader.GetOracleValue(j);
}
i++;
}
}
catch(OracleException oe)
{
this.gestionErreur(oe);
returnnull;
}
finally
{
this.oracleReader.Close();
this.oracleCmd = null;
this.oracleReader = null;
}
return oArrResult;
}