Alright then. It gets a bit complex but, I'll keep posting answers as long as you keep asking questions ;-)
To start with, here is the MSDN article on the
BackgroundWorker, give it a read, but don't get to frustrated at it, it lacks a lot in the 'first timers' helpfullness, but its a good general overview.
I'm looking now, trying to find a decent tutorial site for the BGW, but in the mean time, read of that MSDN info, and then Google the BGW and see what you find. If nothing else, I have a nice little project I used one in I can cleanse and upload as an example.
As John mentioned Socket programming nearly always requires threaded programming, so the two are a great thing to learn together, but it dose require time to understand it all