It's silly that unbound events are initially null, so you need to do needlessly complex check to call them safely. Even more so if you want it to be thread-safe also.
It should have been trivial to either:
a. Initialize events to some dummy handler that does nothing (yeah, a tiny speed penalty, perhaps - doubt it would matter anywhere at all).
b. Add a little syntactic sugar to the event call to do the null check automatically and properly.
Note that you cannot actually use the null-check for any useful purpose anyway, as once-bound and unbound events may or may not be null AFAIK.