>The Processing_Complete Event is thrown from a different thread, but it is caught by the forms thread isn't it?

Nope, the event handler runs on the same thread as it was thrown. You can prove this to yourself by giving the thread a name and checking the current threads name in the event handler.