Is this an Outlook addin or not? You say it is and then you say it isn't. If
it is an addin why are you creating a new Outlook application object instead
of using the one passed to you in OnConnection?
If this is a standalone application there would be no ActiveExplorer unless
Outlook was running already.
If a standalone app and Outlook wasn't running you'd probably need to logon
to NameSpace and I'd touch the store to make sure it fully loads. I'd also
check to see if I had started Outlook and if so I'd issue an Outlook.Quit
command when I was done.
--
Ken Slovak
[MVP - Outlook]
http://www.slovaktech.com
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Options
http://www.slovaktech.com/products.htm
wrote in message
ups.com...
Hi All,
Of all the posts out there, Outlook.exe doesnot disappear from task
manager mainly due to add-ins still referencing it.
I open outlook manually and the add-in loads, performs its functions
and then when I close outlook the Outlook.exe process gracefully
terminates. Yes, it does terminate all by itself so that would imply
the add-in cleans up after itself. Correct?
The problem arises when I open Outlook from C# (VS 2005) application
(to the calendar). The Outlook.exe lingers in the process list long
after the process is killed. The code is as follows:
Outlook.ApplicationClass oOutlook = new
Outlook.ApplicationClass();
Outlook.Application appOutlook = new Outlook.Application();
Outlook.MAPIFolder oCalendar;
Outlook.Explorer oEx = oOutlook.ActiveExplorer();
oCalendar = null;
if (oEx != null)
{
oCalendar =
oOutlook.Application.GetNamespace("MAPI").GetDefau ltFolder(Outlook.OlDefaultFolders.olFolderCalendar );
oEx.CurrentFolder = oCalendar;
((Outlook._Explorer)oEx).Activate();
}
else
{
oCalendar =
appOutlook.GetNamespace("MAPI").GetDefaultFolder(O utlook.OlDefaultFolders.olFolderCalendar);
oCalendar.Display();
}
oCalendar = null;
oEx = null;
appOutlook = null;
oOutlook = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
}
In the add-in, I handle the Explorer.Close and Inspector.Close events
and when ApplicationObject.Explorers.Count() = 0 and
ApplicationObject.Inspectors.Count() = 0, here is what I do...
oCalendarItem = Nothing
oDeletedItem = Nothing
oExplorer = Nothing
oInspector = Nothing
cInspector = Nothing
addInInstance = Nothing
Marshal.ReleaseComObject(addInInstance)
ApplicationObject = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
What am I doing wrong plzzzz???
Thanx