2

これはいつ呼ばれますか?具体的には、作成しているコントロールがあります。ウィンドウを閉じたときにハンドルを解放するにはどうすればよいですか。通常のwin32では、次のようにします-.netwm_closeDestroyHandle同等ですか?


ウィンドウハンドルを自分で破棄したくない-コントロールが別のオブジェクトのイベントをリッスンしていて、コントロールが破棄されたら、それらのイベントのリッスンを停止したい。例えば:

void Dispose(bool disposing) {
    otherObject.Event -= myEventHandler;
}
4

2 に答える 2

3

通常DestroyHandleDisposeメソッドで呼び出されます。そのため、リソース リークを回避するために、すべてのコントロールが破棄されていることを確認する必要があります。

于 2008-09-04T11:17:30.790 に答える
2

Disposeを呼び出しますDestroyHandleが、常にではありません。親ウィンドウを閉じると、Windows はすべての子ウィンドウを破棄します。この状況でDisposeは、呼び出しませんDestroyHandle(既に破棄されているため)。つまり、DestroyHandleウィンドウを破棄するために呼び出され、ウィンドウが破棄されたときには呼び出されません。

OnHandleDestroyed解決策は、またはのいずれかをオーバーライドすることDisposeです。私はを選んでいDisposeます。

于 2008-09-04T11:55:20.763 に答える