Normally, you call Application.Run() , passing in the Form you wish to use as the MainForm of the application. An alternative is to use this class, which then allows you to control several features, including starting the message loop (again, optionally with a MainForm ), stopping the message loop, and handling ThreadExit events related to the application terminating. You can also override the OnMainFormClosed() method to determine whether the message pump is terminated when the main form is closed. public class ApplicationContext { // Public Constructors public ApplicationContext (); public ApplicationContext (Form mainForm ); // Public Instance Properties public Form MainForm {set; get; } // Public Instance Methods public void Dispose (); public void ExitThread (); // Protected Instance Methods protected virtual void Dispose (bool disposing ); protected virtual void ExitThreadCore (); protected override void Finalize (); // overrides object protected virtual void OnMainFormClosed (object sender , EventArgs e ); // Events public event EventHandler ThreadExit ; } Passed ToApplication.Run() |