Excel processus fonctionne encore après la fermeture de VB.net

Ma question est fondamentalement juste comment à la fin du Excel.exe processus qui s'exécute lors de l'utilisation d'excel. Dans l'application, j'ai ouvert et l'utilisation d'un classeur excel avec un couple de feuilles, puis de les laisser à l'utilisateur de faire comme ils s'il vous plaît, mon problème est que mon application ne se sépare jamais de le processus Excel.

Si l'application est fermée avant de fermer excel, le processus se termine lorsque la fermeture d'excel, sinon si je ferme mon application après la fermeture d'excel, le processus reste en cours d'exécution.

J'ai essayé quelques trucs que j'ai trouvé autour de l'internet pour faire de la cg.recueillir et d'attente pour l'attente des finaliseurs ou quelque chose le long de ces lignes, ni travaillé.

Je peux aussi fermer les processus excel heureusement, le seul problème est de ne pas savoir si je suis la fermeture d'une importante feuille de calcul qu'ils ont négligé d'enregistrer ou de la mine.

Je ne suis pas sûr si l'un de mes code d'aider avec une réponse, mais je suis à l'aide de microsoft.bureau de.interop.excel pour obtenir de excel, et je suis en utilisant un classeur déjà enregistrées dans l'application du dossier de ressources.

-Edit-

Voici tout ce que j'ai essayé, je sais que c'est un peu exagéré, mais malheureusement il n'est toujours pas la fin du processus

Marshal.ReleaseComObject(FirstWorksheet)
Marshal.FinalReleaseComObject(FirstWorksheet)
Marshal.ReleaseComObject(SecondWorksheet)
Marshal.FinalReleaseComObject(SecondWorksheet)
Marshal.ReleaseComObject(ThirdWorksheet)
Marshal.FinalReleaseComObject(ThirdWorksheet)
Marshal.ReleaseComObject(FourthWorkSheet)
Marshal.FinalReleaseComObject(FourthWorkSheet)
Marshal.ReleaseComObject(xlRange)
Marshal.FinalReleaseComObject(xlRange)
Marshal.ReleaseComObject(SecondxlRange)
Marshal.FinalReleaseComObject(SecondxlRange)
Marshal.ReleaseComObject(thirdxlRange)
Marshal.FinalReleaseComObject(thirdxlRange)
Marshal.ReleaseComObject(fourthxlRange)
Marshal.FinalReleaseComObject(fourthxlRange)
Marshal.ReleaseComObject(.activeworkbook)
Marshal.FinalReleaseComObject(.activeworkbook)
Marshal.ReleaseComObject(excelApplication)
Marshal.FinalReleaseComObject(excelApplication)
MSExcelControl.QuitExcel() 'A function made by someone else I work with that was meant to close excel's process
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()

-Edit - Voici le quitExcel méthode

Friend Shared Sub QuitExcel()
    If Not getExcelProcessID = -1 Then
        If Not excelApp Is Nothing Then
            'Close and quit
            With excelApp
                Try
                    Do Until .Workbooks.Count = 0
                        'Close all open documents without saving
                        .Workbooks(1).Close(SaveChanges:=0)
                    Loop
                Catch exExcel As Exception
                    'Do nothing
                End Try
                Try
                    .ActiveWorkbook.Close(SaveChanges:=0)
                Catch ex As Exception
                    'Do nothing
                End Try

                Try
                    .Quit()
                Catch ex As Exception
                    'Do nothing
                Finally
                    myExcelProcessID = -1
                End Try
            End With
            excelApp = Nothing
        End If
    End If
End Sub

Il avait déjà essayé de faire la même chose avec l'ID de processus est, dans sa catégorie, le problème était sa ne fonctionnait pas, c'est pourquoi j'ai essayé d'obtenir l'ID de processus à nouveau moi-même, qui a travaillé

Peut être intéressant: stackoverflow.com/questions/1610743/...
Voir aussi ici:stackoverflow.com/questions/1041266/...
Merci, je vais jeter un oeil à eux deux!
Pouvez-vous ajouter le code de MSExcelControl.QuitExcel()? Cela semble être où est le problème.

OriginalL'auteur Alex | 2012-08-01