佐々木屋

技術的なことから趣味まで色々書きます

メッセージループ(Application.RunとForm.ShowDialog)

通常、エントリポイントで起動フォームを指定する場合、Application.Runメソッドを使用します。
Application.Runに指定されたフォームは表示されると、マウスやキーボードの操作を受け付けるために待機状態となります。そして操作が実行されると、その操作内容はメッセージとしてアプリケーションに送信されます。

送信されたメッセージはシングルスレッドのキュー受付のような状態で待機し、順番に処理されます。この処理がメソッド(イベント)の実行です。

f:id:sasaki816:20190118144728j:plain
このようなWindowsの仕組みを「メッセージループ」と呼びます。図の通りメッセージループはシングルスレッドで処理されますので、一つのスレッドで実行できるメッセージループは一つだけです。

このメッセージループを実行するメソッドがApplication.Runメソッドになります。よって、エントリポイントでまずメッセージループを実行するフォームを指定し、それ以降はこのフォームがアプリケーションの心臓部になり、このフォームが閉じるまでメッセージループが実行されるということになります。


なお、Application.Runメソッドはエントリポイントだけでなくても使用することは出来ますが、慣例としてエントリポイントのみで実行とし、それ以外でフォームの表示を切り替える場合はForm.ShowDialogメソッドを利用します。