 <blockquote> <p>where someone recommended the BackgroundWorker class this MSDN article mentions it is a bad idea to use this when if it manipulates objects in the UI, which mine does for purposes of displaying status counts</p> </blockquote> <p><a href="http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx" rel="nofollow">BackgroundWorker</a> is actually ideal for this, as it was designed for this type of scenario. The warning is that you shouldn't change UI elements inside of <code>DoWork</code>, but rather via <code>ReportProgress</code> and the <code>ProgressChanged</code> event.</p> <p>The reason the warning exists is "DoWork" is executed on a background thread. If you set a UI element value from there, you'll get a cross threading exception. However, ReportProgress/ProgressChanged automatically marshals the call back into the proper <code>SynchronizationContext</code> for you.</p>