I am sure a responsive UI is something that everyone strives for and the reccomended way to do stuff is to use the BackgroundWorker for this.
Do you find it easy to work with ? Do you use it often ? Or do you have your own frameworks for lengthy tasks and reporting process.
I have found that I am using it quite a lot and even using its delegates wherever I need some sort of progress reporting.
Multithreaded programming is hard to grasp in the beginning (and veterans still fail sometimes) and BackgroundWorker makes it a bit easier to use. I like the fact that BackgroundWorker has functionality which is easy to implement but even easier to wrongly implement in a subtle way, like cancellation. I use it if I have and need a progress update, so I can display a meaningful progress bar.
If not, I use a Thread (or borrow from the ThreadPool), because I don’t need all the functionality of BackgroundWorker and am proficient enough with threads to start a Thread and wait for it to stop.
As for delegates for non-related tasks, I use those of the Thread classes, like plain
void ThreadStart(), or I create my own.