Unit Testing, Agile Development, Leadership & .NET - By Roy Osherove
Im an advocate of the fail-fast philosphy on exceptions.
I absolutely never want to gooble up exceptions the way you proposed in your delegate invoke with try/catch.
Unless your program recognises exactly what the exception is and can take steps to rectify the situation, it should fall over in a heap.
If you call every delegate asynchronously, you hit the thread pool pretty hard if you have a lot of subscribers (and thread pool resources are precious ;-).
As an alternative you could consider calling the FireClickedEvent asynchronously. That way you only eat up 1 thread of the thread pool. This is of course only an option if the event is not too time-sensitive and subscriber would still get predictable/expected behavior when their handler is called with a certain delay...