ApplicationContextクラスを継承することで、アプリケーションスレッドの終了条件を定義する事ができる。 Application.Run()メソッドにApplicationContextクラスから派生したインスタンスを渡すことによりメッセージループの実行が開始する。 ApplicationContext.ExitThread()メソッドを呼び出すことでメッセージループの実行を終了することができる。
このクラスのインスタンスを用いてアプリケーションを開始することにより、ウィンドウを持たないアプリケーションでもメッセージループを持つことができるようになる。 MainFormプロパティを設定することによりウィンドウを持つこともできるが、ウィンドウが閉じてもExitThread()メソッドを呼び出さない限りメッセージループは終了せず、Application.Run()の呼び出しも終了しない。
この例ではApplicationContextを継承したCalculatingApplicationというクラスを作成し、アプリケーションを起動している。 また、計算が終了した時点でクラス内からExitThread()メソッドを呼び出している。 これが呼び出された時点でアプリケーションが終了する。