Have you ever written a multi-threaded application in .NET? If you have, chances are, you think that making thread-safe calls to update your UI is, well, really annoying and verbose at best. The issue is that every time you are doing work in a thread other than your UI thread, and then need to update the UI from said thread, you need to create a delegate pattern in order to do so without getting an InvalidOperationException. Threads are nice when you need to do stuff in the background without causing your application to hang. Often you want to show the progress of the load that is being handled. In many occasions, that's a progressbar but in some you want to show in detail what is being done. In the first situation where it is only needed to update a progress bar, a backgroundworker can be used. The background worker sends thread safe events. In that event, you can update your progress bar. In the other situations where you want to show more information of w...