The BackgroundWorker is just a class that wraps a thread to hide some of the detail and make it easier to use by providing specific methods and events. You should use the BackgroundWorker if it can do what you want. If you need more fine-grained control then create a Thread yourself.