Κοίτα το BackgroundWorker component. Είναι φτιαγμένο ειδικά για να εκτελεί εργασίες σε άλλο thread και να ειδοποιεί με το σωστό τρόπο τη φόρμα. Το Αν κοιτάξεις στο σχετικό κεφάλαιο του MSDN Library, θα βρεις παραδείγματα και How-To για να κάνεις αυτά που θέλεις.
Συνοπτικά, το BackgroundWorker έχει το DoWork event στο οποίο εκτελείς τη χρονοβόρα διαδικασία. Περιοδικά καλείς την ReportProgress μέθοδο η οποία σηκώνει το ProgressChanged event για να ειδοποιήσει τη φόρμα ότι η επεξεργασία προχωράει. Εκεί μπορείς π.χ. να χρησιμοποιήσεις την τιμή που σου δίνει το ProgressChanged event για να αλλάξεις την τιμή ενός progress bar στη φόρμα.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos