What ways are there for classes to provide progress information
<p>I have multiple classes that do lengthy tasks in threads and want them to output some kind of progress, so i can display it to a progress bar or a counter.</p>

<p>I could use an event or a delegate, defined in an interface, but it seems for every implementation I will need to write the exact same FireEvent code to check if the event is null and raise it, if it's not.</p>

<p>Using an abstract class seems bad too, since functionality like that does not belong in the top most class, which means I have to implement it at different places again.</p>

<p>How do I do that in the most reusable way, without duplicate code everywhere?</p>
