form1 と form2 の 2 つのフォームを含むサンプル Windows フォーム アプリケーションを作成しました。
Form1 にはボタンが含まれており、クリックすると、以下のように form2 がダイアログ ボックスとして表示されます。
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
try
{
form2.ShowDialog();
}
catch (Exception ex)
{
}
finally
{
if (form2 != null)
{
form2.Dispose();
form2 = null;
}
}
}
次に、ボタンをクリックしてアプリケーションをチェックすると、form2が開き、閉じます。そしてこれを約6回続けました。
DevPartnerでアプリケーションを確認すると、常にForm2 form2 = new Form2();
リークしていると表示されます
Web をチェックインすると、ShowDialog を使用している場合、フォームを閉じた後にフォームを破棄する必要がある、つまり、finally ブロックで破棄しようとした理由が示されています。しかし、それでもその行が漏れていることを示しています。どなたか、このリークについてご意見をお聞かせください。