Problem with ItemSent event

  • Thread starter Thread starter noolyg
  • Start date Start date
N

noolyg

Hello all,

I am writing an outlook plugin for saving emails I send and receive.
For some reason, after a while, the ItemSent event stops and the
delegate doesn't get called when emails are sent.

Any ideas why does that happen? What could be done to prevent it from
happening?

Thanks in advance,

Nool
 
Sounds like the classic "object goes out of scope and get's garbage
collected" issue.

Make sure whenever you bind to events in any .NET application (but
especially COM interop scenarios like Office) that the object remains rooted
for as long as you intend to handle the event. Otherwise the garbage
collector will pick it up and discard it.

The problem is worse in COM interop scenarios because even though the real
object might still be alive (like the Outlook Application object) it's
runtime callable wrapper (RCW) is created on the fly and thrown away when it
goes out of scope. You can hang onto the RCW in a static field or instance
field if need be.
 
Thanks for your reply - but I'm am not sure what you mean - what is
getting out of scope?

I'm attaching the delegate to an outlook event - how can I prevent from
it getting out of scope.

Another thing is I played around with it - and the problem only happens
when I use streams - when I do some other (similarly time consuming)
action - it does not happen and the delegate gets called all the time.
Any ideas?

Thanks again.
Nool
 
Either declare your item for the event handler at a module level in a class
that never gets released or add the item to a collection or hashtable to
make sure it stays alive and doesn't get garbage collected.
 
Back
Top