I've been meaning to get around to writing a good tutorial on c# background workers. Mainly because I use them to separate the GUI from all the heavy lifting and I always forget how to update things.
In case I never get around to it. This is about the clearest introduction I've ever found. Well worth a read…