私が理解しているように、C# でのメモリ リークの主な原因の 1 つは、コンテナーが破棄されたときにイベント リスナーの登録を解除できないことです。このため、イベント (a など) を手動で登録するときはいつでも、オブジェクト (または親オブジェクト) の操作が完了したTimer.Elapsed += ...
ことを確認します。Timer.Elapsed -= ...
しかし、Windows フォーム デザイナで生成されたクラスを調べていたところ、イベント (例: ) を喜んでサブスクライブしている一方で、既定のアクションthis.button1.Click += new System.EventHandler(this.button1_Click);
以外にクリーンアップ手順がないように見えることに気付きました。components.Dispose();
Dispose()
これは、各コンポーネントのメソッドが、それにバインドされているすべてのイベントから登録解除/登録解除することが期待されていることを意味しますか? もしそうなら、コンポーネントは認識していない「外部」イベントハンドラーからどのように登録解除しますか?これは、標準の [IDisposable] Windows コントロール (タイマー、ボタン、フォームなど) からイベントリスナーを手動で削除しようとする試みが一般的に行われることを意味しますか?不要?
ありがとう