Και εγώ είμαι λάτρης της VB 6.0 και πρώην χρήστης της αλλά φτάνει πιά.
Είχα προσπαθήσει κάτι παρόμοιο αλλά έβγαλα τζάμπα τα μάτια μου. (παρεμπιπτόντως την παρασκευή έχω ραντεβού με την οφθαλμίατρο!)
Θα προτιμήσω να σε ψήσω με ένα πρότυπο παράδειγμα σε .net για να καταλάβεις τι χάνεις...
Ρίχνεις στο παιχνίδι έναν backgroundWorker π.χ.
myBackgroundWorker.RunWorkerAsync(ότι θες να περάσεις στην αργή εργασία γιατί μετά δεν έχει πρόσβαση έξω);
γεμίζεις τα 3 βασικά του event και κάθεσαι μετά να το χαζεύεις

αντί να βγάζεις τα μάτια σου.

private void myBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
ενέργεις που θέλεις να κάνει όσο δουλεύει
}
private void sampleBackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
ενέργεις που θέλεις να κάνει κάθε φορά που ολοκληρώνει ένα τμήμα του συνόλου της αργής δουλειάς
}
private void sampleBackgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
ενέργειες που θελεις να κάνει όταν τελειώσει το δύσκολο έργο του
}
Ενδέχεται να υπάρχουν και άλλοι τρόποι στο άπειρο .net τους οποίους δεν γνωρίζω, που ίσως να προσφέρουν περισσότερα πράγματα.