「Dev」というフォームには、ユーザーがフォームを閉じたときにスレッドが適切に閉じられるように、次の OnFormClosing 関数があります。
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
dev.stopMultipleColorsWatcher();
}
「Dev」フォームを直接閉じると正常に動作します。しかし、メイン フォーム ("Form1") が閉じられたために "Dev" フォームが閉じられた場合 (これによりプログラムが終了します)、OnFormClosing()
"Dev" の関数は呼び出されないため、スレッドは実行を続け、プログラムのプロセスはタスクマネージャー経由で殺されます。
これを修正するにはどうすればよいですか? OnFormClosing()
「Form1」に関数を追加して、「Dev」で関数を呼び出すことができることに気付きOnFormClosing()
ましたが、もう少しクリーンなものを望んでいました。
アップデート:
Dev フォームはメイン フォームから開きます。
private void btn_opendev_Click(object sender, EventArgs e)
{
Dev frm = new Dev();
frm.Show();
}
メイン フォームは実際には "programname.UI.Main" と呼ばれ (私は知っています..)、"Program.cs" で開かれます (つまり、プログラムのエントリ ポイント)。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new programname.UI.Main());
}