My Com Add-ins cause outlook process blocked

My Com Add-ins cause outlook process blocked

Post by jz » Thu, 23 Feb 2006 11:16:26


Hi All,

I have developped an outlook Com Add-in and normaly my add in works
fine;
but when I ran it under W2K outlook 2000, I got a problem, the outlook
window is closed
but I can still find outlook.exe process in the task manager, that will
cause my Com Add-in Loading failure.

If I remove my Add In, the outlook is closed properly;
Here is what I am doing in my souce code:


Implements IDTExtensibility2

Dim WithEvents objApp As OUTLOOK.Application
Dim WithEvents objOutlookExp As OUTLOOK.Explorer
Dim WithEvents objActiveInspector As OUTLOOK.inspector
Public WithEvents objItems As OUTLOOK.Items
Dim WithEvents objAppointItem As OUTLOOK.AppointmentItem
Dim objInspector As OUTLOOK.inspector
Dim WithEvents objButtonInstant As Office.CommandBarButton
Dim WithEvents objButtonSchedule As Office.CommandBarButton
Dim objCommandBar As Office.CommandBar
Dim WithEvents Inspectors As OUTLOOK.Inspectors



then in the funciton


Private Sub objOutlookExp_Close()
'Release Explorer Object
'Set objOutlookExp = Nothing
If objApp.Explorers.Count <= 1 Then
objCommandBar.Delete
Call Class_Terminate
End If
End Sub


here is the Class_Terminate function



Private Sub Class_Terminate()
MsgBox "Enter the terminate function"

Set objButtonSchedule = Nothing
Set objButtonInstant = Nothing
Set objAppointItem = Nothing
Set objItems = Nothing
Set objActiveInspector = Nothing
Set Inspectors = Nothing
Set objOutlookExp = Nothing
Set objApp = Nothing

End Sub


I add msgbox here to debug. it is called correctly;

I did like what it is said in the book of Ken Slovak;

Can someone point out my problem;

and it there a way to force the process outlook.exe to be terminated?



Thank you very much



jz
 
 
 

My Com Add-ins cause outlook process blocked

Post by Ken Slovak » Thu, 23 Feb 2006 23:56:50

I count at least 2 objects that you aren't releasing in your close down
code. You need to be very careful to not keep any Outlook derived objects or
the addin won't let Outlook close. Another key thing to do is to make sure
you handle every possible error with an error handler.

Your test code should also be testing for Inspectors.Count as well as
Explorers.Count.

--
Ken Slovak
[MVP - Outlook]
http://www.yqcomputer.com/
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Options
http://www.yqcomputer.com/

 
 
 

My Com Add-ins cause outlook process blocked

Post by jz » Fri, 24 Feb 2006 13:16:43

Thank you Ken, you are right, but also I observed that the order of the
objects to be cleaned is also very important; if I did respect set to
nothing from small objects to container, then it won't close correctly.
 
 
 

My Com Add-ins cause outlook process blocked

Post by Ken Slovak » Fri, 24 Feb 2006 23:38:06

I always start with my collections and unwind them if they contain objects
before I release the collection:

For i = colWhatever.Count To 1 Step -1
colWhatever.Remove i
Next
Set colWhatever = Nothing

--
Ken Slovak
[MVP - Outlook]
http://www.yqcomputer.com/
Author: Absolute Beginner's Guide to Microsoft Office Outlook 2003
Reminder Manager, Extended Reminders, Attachment Options
http://www.yqcomputer.com/