You'd do it the same way you're achieving a "Modal MdiChild"...by breaking the code out and making the code "continue" in a separate method in response to an event such as the "modal" form being closed. Any attempt to keep the code in the SAME method like ShowDialog() will just end up either locking up the main UI thread or end up using an ugly polling loop with DoEvents(). =\