What is the difference between BackgroundWorker and Thread? In my application I am using a messaging system that communicates with the database reg
Use BackgroundWorker - it anyway encapsulates thread and is simpler to work with. One of the advantage with it is that its api allows simpler event based model to report progress and further, those event calls get correctly routed to UI thread (so that you don't have to do marshal the call using Invoke method).