Bonjour à tous,

Je réalise un petit viewer de PDF avec recherche automatique de fichiers PDF dans des dossier précis.

Pour afficher le PDF dans mon WinForm je fais appel au composant COM AxAcroPDF d'Adobe Reader.
Aucun soucis pour l'affichage du fichier qui fonctionne comme on peut l'attendre.

En revanche j'ai un problème lors de la fermeture de ma fenêtre.

En effet, lorsque je clique sur la croix, la fenêtre mets plusieurs secondes à se fermer avec le curseur de la souris qui se transforme en montre et dans la barre de tâches une fenêtre fantôme Adobe Reader apparait....

J'ai réalisé un test simple pour essayer de corriger le souci.
Sur un bouton je fais ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
private void button2_Click(object sender, EventArgs e)
        {
            axAcroPDF1.Dispose();
            this.Close();
        }
Et la miracle la fenêtre se ferme immédiatement de manière tout à fait correcte.

J'ai donc essayer ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            axAcroPDF1.Dispose();
        }
Mais ça ne fonctionne pas !

Quelques recherche sur notre ami commun m'on apporté ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
[System.Runtime.InteropServices.DllImport("ole32.dll")]
    static extern void CoFreeUnusedLibraries();
 
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (axAcroPDF1 != null)
        {                                
            axAcroPDF1.Dispose();                
            System.Windows.Forms.Application.DoEvents();
            CoFreeUnusedLibraries(); 
        }
    }
Qui ne fonctionne pas non plus.....

Je ne comprends pas pourquoi cela fonctionne si je passe un par un bouton, mais pas quand je cherche à faire la même chose lors de l'event de fermeture de la fenêtre.

Auriez vous une idée ?

Merci d'avance à vous