このProgram.cs
ファイルには、おそらく次のような関数があります。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
この関数は、アプリケーションのエントリポイントです。このApplication.Run()
関数は、アプリケーションのメインループを実行します。グラフィカルアプリケーションのメインループは、イベントハンドラーがイベントをトリガーしたり、UIが更新されたりする場所です。イベント(ボタンを押すなど)の処理に時間がかかりすぎると、UIがハングします。これを防ぐために、スレッドを使用できます。
関数がオーバーロードされているため、Application.Run()
関数にパラメーター(new Form1()
この場合)がある場合、フォームは「メイン」フォームになり、フォームが閉じられるとメインループが終了します。
この問題を修正するには、パラメーターを削除する必要があります。これにより、フォームが閉じたときにメインループが閉じずに実行されます。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run();
}
ただし、これにより2つの問題が発生します。
関数からフォームを削除したため、起動時にフォームは表示されませんMain
。これを修正するには、main関数で新しいフォームを作成し、それを表示する必要があります。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form = new Form1();
form.Show();
Application.Run();
}
フォームを閉じても、アプリケーションは終了しません。すべてのフォームを閉じても、プロセスは引き続き実行されるためApplication.Exit();
、アプリケーションを終了するときに呼び出す必要があります(フォームを閉じるイベントなど)。