How do you fire events from a multithreaded class?

I currently have a class that spawns different threads. When certain things in those threads happen, I want it to fire off an event in the thread of the original "creator" of the class. For instance, if the Form creates the object, all events should go to the Form's thread so it can make appropriate changes.

What I'm finding is that no matter what I do in the threads, I can NOT get the events to fire in the form without causing an error that the form's controls were created in a different thread. Really need some help here, with a very clear explanation.

I did attempt to use Invoke/Delegates, but continued to get the same error when calling the delegated method, so obviously have that set up wrong.

The BackgroundWorker seems like a better option *IF* it can "talk" back to the calling class so that class can raise events. From what I've read here, it seems like they expect the method to just run, and eventually stop. This loop that will be threaded should run the entire time the app is running, and occasionally fire events. (Long story short, I'm attempting to make a sockets wrapper class.)