What I think you're looking for is a way to run your long running method and display a progress dialog without locking up the UI. You also need to watch out for cross-threading issues by accessing your UI from a different thread.
What I would suggest is to pattern it this way which will keep your application responsive while the task is running:
var wd = new WaitDialog(); wd.Show(); // Show() instead of ShowDialog() to avoid blocking var task = Task.Factory.StartNew(() => LongRunningMethod()); // use .ContinueWith to avoid blocking task.ContinueWith(result => wd.Invoke((Action)(() => wd.Close())));
You show your progress dialog -- whether it has a marquee or not is of no consequence -- and then you spin up your LongRunningMethod on its own task. Use the .ContinueWith method to close your dialog when the task has completed and to also avoid blocking the rest of your program.