ホームページ >バックエンド開発 >C++ >C#イベントから匿名のメソッドを登録するときにメモリが漏れるのを防ぐ方法は?

C#イベントから匿名のメソッドを登録するときにメモリが漏れるのを防ぐ方法は?

DDD
DDDオリジナル
2025-01-27 07:11:09497ブラウズ

How to Prevent Memory Leaks When Unsubscribing Anonymous Methods from C# Events?

C#イベントの取り扱いでメモリリークを回避する:適切に匿名のメソッドの登録

イベントは、C#オブジェクトの相互作用でゆるい結合を達成するための基本です。 ただし、この柔軟性はリスクをもたらします。イベントハンドラーが正しく削除されない場合、メモリがリークします。 これは、匿名の方法で特に当てはまります。

匿名のメソッドがイベントに登録されている典型的なシナリオを調べてみましょう。

問題? この匿名の方法には名前の参照がなく、その後の削除が妨げられます。 これにより、イベントハンドラーが必要でなくても、メモリに保持される可能性があります。
<code class="language-csharp">MyEvent += delegate(){Console.WriteLine("Event triggered!");};</code>
ソリューションは簡単です。購読する前に、匿名メソッドを指名された代表者変数に割り当てます:

さて、

匿名メソッドへの参照を保持します。 これにより、
<code class="language-csharp">Action myEventHandler = delegate(){Console.WriteLine("Event triggered!");};
MyEvent += myEventHandler;</code>
演算子を使用してクリーンなサブスクリプションが可能になります

myEventHandlerこれにより、匿名のメソッドがメモリから適切に解放され、漏れが防止されます。 匿名のイベントハンドラーへの参照を常に維持して、安全で効率的なサブスクリプションを可能にします。

以上がC#イベントから匿名のメソッドを登録するときにメモリが漏れるのを防ぐ方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。