Processus

Signaler
Messages postés
28
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
19 mars 2007
-
Messages postés
28
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
19 mars 2007
-
salut à tous !
j'ai un programme qui présente des données provenant de ma DB Sql server sous excel.
j'ai deux problèmes !

1/lors de l'execution de mon programme le systeme envoie un message disant que je manque de memoire virtuelle.
je ne sais pas comment je pourrrais y remedier.?
j'ai 512 de RAM et 2,99 GHz comme vitesse de processeur

2/lorsque je ferme mes fenetres excel je constate que dans mes processus actifs, excel figure toujours
ce qui charge la memoire lors d'executions multiples.
comment faire pour tuer le processus excel concerné lorsque je quitte ma fenetre excel ?
merci de m'aider !

4 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Salut,

Pour fermer correctement tes processus Excel il faut :

Appeller la méthode Quit() de ton objet Excel.Application, et lui assigner null
Appeller System.Runtime.InteropServices.Marshal.ReleaseComObject(tonObject);

Et éventuellement appeler Gc.Collect();

Mx
MVP C# 
Messages postés
28
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
19 mars 2007

Merci
je viens de tester comme ceci :

Excel_App.Quit();

System.Runtime.InteropServices.

Marshal.ReleaseComObject(Excel_App);Excel_App =

null;

GC.Collect();
Mais dans les processus EXEL.EXE figure toujours !
 mon application excel s'appelle Excel_App

et voici comment je declare mon appli excel :

Microsoft.Office.Interop.Excel.

_Application Excel_App;Microsoft.Office.Interop.Excel.

_Workbook Excel_Clsseur;Excel_App =

new Microsoft.Office.Interop.Excel.
ApplicationClass();Excel_App.ReferenceStyle = Microsoft.Office.Interop.Excel.

XlReferenceStyle.xlR1C1;Excel_App.Visible =

false;

object Missing = System.Reflection.
Missing.Value;Excel_Clsseur = Excel_App.Workbooks.Add(Missing);

Microsoft.Office.Interop.Excel.

Sheets Excel_Flles = Excel_Clsseur.Sheets; 

La vie est un combat perpétuel !
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
47
Salut,

Je viens de tester avec ton code, et cela fonctionne pourtant.
Es-tu sur que le code qui libere les ressources est atteint ? (Erreur levée silencieusement, ce qui empeche le code de liberation des ressources de s'executer). Idealement il faudrait éxecuter ce code dans un block finally{}

Mx
MVP C# 
Messages postés
28
Date d'inscription
vendredi 29 juillet 2005
Statut
Membre
Dernière intervention
19 mars 2007

Oui ça marche j'ai vérifié ce matin (mon code  a tourné dans la nuit)
il me semble que c'est pas instantané mais progressivement les processus Excel sont detruits.
Merci encore !
La vie est un combat perpétuel !