GhostフォームでWinFormsに問題があり、フォームにthis.Close()
があり、close
コマンドを送信すると消えますがメモリに残っています。適切に私は、このメソッドを作成し、これらのフォーム閉じるには:C#APPのGhostフォーム
public static void CloseAllForms()
{
//foreach (frmBase item in Application.OpenForms)
//{
// if (!item.Name.Equals("frmVinheta") && !item.Name.Equals("frmPrincipal"))
// {
// item.Dispose();
// item.Close();
// }
//}
for (int i = Application.OpenForms.Count - 1; i > 1; i--)
{
Form1 f1 = Application.OpenForms[i] as Form1;
Application.OpenForms[i].Dispose();
Application.OpenForms[i].Close();
Application.OpenForms[1].RemoveOwnedForm(Application.OpenForms[i]);
}
GC.Collect();
}
をしかし、FRMは、彼がOpenFormsリスト、メモリに近いままていない私のdispositivesのすべては、それがゴーストフォームにイベントだ送信、所有者の負け。
誰かが私がここでテストできる他のことを知っていますか?
アプリケーションの他のプロセスのハンドルを持っていない、フォームは私には表示されません、彼は視覚的に閉じていたが、私はOpenFormsリストでそれを見ることができるデバッグ。 'this.Close()'は私の視界からフォームを削除するように機能しますが、削除しないでください。アプリケーションは正常に動作しますが、キーボードストレステストを開いてフォームを開いたり、フォームを閉じたり、フォームで作業したりすると、メモリにまだ開いている1つまたは複数のメッセージフォーム(このメッセージはまだ8秒間閉じています) – JonesVG
ああ、まだメモリを使用しているのですか? – RhysO
彼はまだメモリにいますが、私には現れません。彼はまだアクティブフォームのリストにあります。 'Application.OpenForms' – JonesVG