Home All Groups Group Topic Archive Search About

OLE: Excel.Application

Author
10 Aug 2006 11:13 AM
myname
Hello,

in VB.Net, I use Excel to display results :

dim xl as new Excel.Application // creates an Excel process
// snip (putting values into cells)
xl.Visible = true

If the user closes the Excel file, the Excel process remains
in memory until my program is closed, which is good.

If the user closes my program first and then the Excel file,
the Excel process remains in memory !

How can I make sure the process will be killed ?

Thanks !

Author
11 Aug 2006 7:51 AM
R. MacDonald
Hello, myname,

You need to include a line like:

    xl.Quit

in the appropriate place.  But due to the vagaries of .Net garbage
collection this may not result in immediate termination of the Excel
application.  For this you could add lines like:

         System.Runtime.InteropServices.Marshal.ReleaseComObject(...)
    . . .
         System.Runtime.InteropServices.Marshal.ReleaseComObject(xl)
         GC.Collect()
         GC.WaitForPendingFinalizers()

where "..." refers to any Excel Workbook and Worksheet objects that you
have opened.

Cheers,
Randy


myname wrote:
Show quoteHide quote
> Hello,
>
> in VB.Net, I use Excel to display results :
>
> dim xl as new Excel.Application // creates an Excel process
> // snip (putting values into cells)
> xl.Visible = true
>
> If the user closes the Excel file, the Excel process remains
> in memory until my program is closed, which is good.
>
> If the user closes my program first and then the Excel file,
> the Excel process remains in memory !
>
> How can I make sure the process will be killed ?
>
> Thanks !
>
>
>
>