C# Multi-threaded background worker with dialog to show progress