My method quite possibly is a long work around but it saves on a variable, and one less thing that could go wrong, especially when you start doing multi threading and things like that. When you have variables that control the behaviour of an object things can get very tricky when you get into multi-threading. If you have two threads trying to change the property using your method, one raising the event and one not, you will find that things dont act the way they should. The event may fire once, twice or not at all depending on which thread got their first and which one left first.

But on the other hand if you are not multi-threading the other method is fine, but you must remember to set the variable, then clear it again after you have made the change to the property. Two things to remember to do, one if you just remeber to call the "friend" method instead of the "public".

They each have their draw-backs, i do admit that.