I have a component which starts a secondary thread.

I don't want the main thread to loop, poll or wait for the secondary thread to finish. I want an event to be fired when the secondary thread is finished.

If the main thread was a ui or a control then the secondary thread could use BeginInvoke to fire an event in the main thread.

But Component doesn't have any Invoke or beginInvoke so I can't do that.

How does the secondary thread fire an event in the main thread of the component ?