When your application needs to perform time-consuming operations, you don’t want the interface to hang, so you need to use a separate thread for this operation. Still, if the operation takes some time to process, you may want to give the user some feedback about its progress. The .NET framework provides the Thread and ThreadPool classes to create and manage threads. They can be quite powerful and are a must for heavy threading operations. However, if you want a simpler solution, the BackgroundWorker class is your friend.