I'm trying to create a multithreaded application with BackgroundWorkers.

I understood the idea (the process starts at another thread without blocking the main one and has a reference to an object. When the progress changes or the job finishes, the thread invokes a function which has the object and a delegate in its signature. I think that's the main idea. Please correct my wrong parts) but I don't know how to do it in Visual C++ (Studio 2005 -> .NET Framework 2.0).

How to associate a backgroundworker with a function? That would be enough. I'm just confused by how delegates and callback things work, can somebody explain it simply? I researched about them but they all seem to be complicated.

To be more clear;

void thefunction ( ??? ){

ComponentModel::BackgroundWorker bw;
Object obj; //this has the needed data for the function


how to associate bw with thefunction? What should the parameters of thefunction be to communicate with the sender object(s)?

I really need help with these,