>避免在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
-=
<code class="language-csharp">// ... later in your code ... MyEvent -= myEventHandler;</code>>
以上是從 C# 事件取消訂閱匿名方法時如何防止記憶體洩漏?的詳細內容。更多資訊請關注PHP中文網其他相關文章!