別のフォーム Form1 によって開かれる次のフォーム Form3 があり、閉じると Form1 が再び開きます。
問題は、Form3 を閉じると、フォームが閉じられた後も DoSomething が実行され続けることです。
DoSomething をスレッドにして IsBackground = true を設定できることは理解していますが、フォームを閉じたときにすべてのプロセスを停止する別の方法はありますか。
このコードは単なる例です。説明用です。
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
private void DoSomething()
{
int i = 0;
while(true)
{
if (!this.IsDisposed)
{
Application.DoEvents();
i++;
Thread.Sleep(10);
label1.Text = i.ToString();
dataGridView1.Rows.Add();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
DoSomething();
}
private void Form3_FormClosed(object sender, FormClosedEventArgs e)
{
this.Dispose();
Form1.Default.Show();
}
}