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.
So, you are building a C# application and need to parse a web page’s HTML. You could use regular expressions, but it seems more efficient to use a DOM-based approach. What if you could even take advantage of the power of XPath?