Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1923 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  C# et application tierce (MS-EXCEL) (résolu)

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C# et application tierce (MS-EXCEL) (résolu)

n°1461367
bb138
La vie est belle ...
Posté le 20-10-2006 à 14:13:20  profilanswer
 

Bonjour,
 
Depuis mon programme en C#, j'arrive à lancer MS-Excel (non visible) et faire les traitements désirés. Je ferme l'application (cf. code) à priori correctement, cependant, le processus MS-Excel n'est pas arrêté... Il ne l'est que lorsque l'application est terminée...
 
Tout ceci ne serait pas génant si j'utilisais bien une application. Le problème est que ce bout de code se retrouve dans une tâche externe rattachée a une base de données et cette tâche n'est arrêtée que lorsque la base l'est. Du coup, en utilisation normale, je me retrouve avec XXX process MS-Excel  :(  
 

Code :
  1. using System;
  2. using Excel;
  3. namespace testExcel
  4. {
  5. /// <summary>
  6. /// Description résumée de Class1.
  7. /// </summary>
  8. class Class1
  9. {
  10.  /// <summary>
  11.  /// Point d'entrée principal de l'application.
  12.  /// </summary>
  13.  [STAThread]
  14.  static void Main(string[] args)
  15.  {
  16.   Excel.Application app = new Excel.ApplicationClass();
  17.   app.Visible = true;   // ou laisser la valeur par défaut pour ne pas montrer la fenêtre excel
  18.   int i = 0;
  19.   System.Threading.Thread.Sleep( 1000 );   // juste pour montrer qu'Excel s'ouvre bien comme il faut
  20.   app.Quit();
  21.   app = null;
  22.   while( i++ < 100 )
  23.    System.Threading.Thread.Sleep( 1000 );
  24.  }     // <-- On arrive ici et le processus Excel n'est toujours pas terminé...
  25. }
  26. }

PS : Ne pas oublier de référencer l'objet COM adéquat.


Message édité par bb138 le 23-10-2006 à 13:53:22
mood
Publicité
Posté le 20-10-2006 à 14:13:20  profilanswer
 

n°1461596
Vectteur
Hein ?
Posté le 20-10-2006 à 17:50:41  profilanswer
 

+1 (meme question pour moi)


---------------
ceci est un bloc de texte
n°1461720
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 20-10-2006 à 22:48:38  profilanswer
 

il ne faut pas oublier de libérer l'objet COM une fois qu'on n'en a plus besoin... c'est un objet COM, pas une assembly managée, donc c'est à toi de libérer la mémoire qu'il utilise.
ajoute la ligne suivante après app.Quit();

Code :
  1. System.Runtime.InteropServices.Marshal.ReleaseComObject(app);


---------------
J'ai un string dans l'array (Paris Hilton)
n°1463004
bb138
La vie est belle ...
Posté le 23-10-2006 à 13:31:20  profilanswer
 

Arf, je te remercie beaucoup !  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  C# et application tierce (MS-EXCEL) (résolu)

 

Sujets relatifs
[Résolu] Changement de couleur au passage de la souris[Résolu]Problème de caractères depuis migration de siteweb
[résolu][C]Comment insérer une image dans un programme.[MFC][Résolu] Tab spécifiques (Comment rendre un bouton transparent)
CSS : problème d'application d'une CSS[Résolu]Fenêtres existentes et fenêtre active
[Excel/VBA] Manipulation de tableaux à 2 dimensionsNumérotation feuilles excel
Question toute simple sur les arrays en VBA / ExcelRecherche multiple dans Excel
Plus de sujets relatifs à : C# et application tierce (MS-EXCEL) (résolu)


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR