ItemAdd in Deleted Items event doesnt fire after a while

  • Thread starter Thread starter lin.en.shu
  • Start date Start date
L

lin.en.shu

I'm having this problem where i can't find a solution on my own and
neither can i find and posted solution around the web or forums. The
scenario is this : In order to trace the deleted items, i had added an
ItemAdd event on the deleted items folder to handle the entryid of the
deleted items. Well, it works in the beginning, but somehow i observed
this, after a while, specifically after i deleted a few of them and
after that added a few of them, it no longer handle the ItemAdd of the
deleted items folder. This is strange, and i need urgent help. Thanks.
 
This is an indication that you are not storing the Items collection in a
variable that stays referenced. As soon as the GC kicks in, the intermediate
variable is released and you no longer received events.


Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
hmm..great. But frankly, I must first apologize because I'm a starter,
and I don't really understand by what you mean of storing the items
collection in a variable that stays referenced. On top of that, how do
I implement that? Please tolerate my incompetencies. Thank you very
much. I deeply appreciate your technical advice.
 
You probably have something like

MAPIFolder.Items.ItemAdd += new ...

but it must be

m_Items = MAPIFolder.Items; //must be a class rather than a local variable
m_Items.ItemAdd += new ...

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
I think I did the right one on this. I declare it as a class like how u
put it

myFolders = MAPIFolder....
myItems = myFolders.Items;
myItems.ItemAdd += new ...

but i still face the problem. Any other idea how to solve this?
 
public void OnStartupComplete(ref System.Array custom)
{

myNamespace = applicationObject.GetNamespace("MAPI");
myFolder =
myNamespace.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
myItems = myFolder.Items;

myDNamespace = applicationObject.GetNamespace("MAPI");
myDFolder =
myDNamespace.GetDefaultFolder(OlDefaultFolders.olFolderDeletedItems);
myDItems = myDFolder.Items;

try
{
myItems.ItemAdd += new
Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(myItems_ItemAdd);
myItems.ItemChange += new
Microsoft.Office.Interop.Outlook.ItemsEvents_ItemChangeEventHandler(myItems_ItemChange);
myItems.ItemRemove += new
Microsoft.Office.Interop.Outlook.ItemsEvents_ItemRemoveEventHandler(myItems_ItemRemove);
myDItems.ItemAdd += new
Microsoft.Office.Interop.Outlook.ItemsEvents_ItemAddEventHandler(myDItems_ItemAdd);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
}
 
You might want to create a small sample add-in that does nothing but monitor
ItemAdd event for the Deleted Item folder and post its source in this
newsgroup (if the problem still manifests itself).

Dmitry Streblechenko (MVP)
http://www.dimastr.com/
OutlookSpy - Outlook, CDO
and MAPI Developer Tool
 
The problem is solved

private void myDItems_ItemAdd(object Item)
{
//myDItems = myDFolder.Items; //previously my friend told me to add
this line to refresh the folder. but after commenting it out it fixed
the problem.
AppointmentItem item = (AppointmentItem)Item;
//blah blah
}
 
Back
Top