0

特定のアクションを実行する必要があるクラスがあります。入力データに基づいて、いくつかのダイアログが表示される場合があります。これらのダイアログは、正しく中央に配置されるように、親ウィンドウのハンドルで呼び出す必要があります。

private IntPtr _parentWindow;
...
System.Windows.Forms.MessageBox.Show(System.Windows.Forms.Control.FromHandle(_parentWindow), "message");

親フォームが最終的に閉じられた後、クラスのインスタンスはまだ存在し、_parentWindow には値が割り当てられたままです。

これは安全ですか?それとも、_parentWindow にハンドルが設定されているため、GC はフォームを完全に破棄しませんか?

4

1 に答える 1

0

いいえ、ウィンドウ ハンドルの値を保持しても、ウィンドウが破棄されたり、そのリソースが完全に解放されたりすることはありません。

GC は、フォームの管理されていないリソースを解放する責任を負いません (このリソースはウィンドウ ハンドルであり、最終的には を通じて解放されます) 。メンバーを特別な方法でDestroyWindow処理することもありません。IntPtr

于 2012-11-20T11:20:48.513 に答える