活动取消订阅

时间:2013-03-16 10:40:15

标签: c# events delegates

我需要取消订阅我的活动所订阅的所有代表。但我发现了两种方法......

class Cls
{
    delegate void doDel();
    static event doDel doE;

    void Uns
    {
    //first
    foreach (doDel item in doE.GetInvocationList())
    {
        doE -= item;
    }

    //second
       doE = null;
    }
}

有什么区别?什么方式最好,为什么?

1 个答案:

答案 0 :(得分:1)

第一种方法是完全正确的。正如MSDN所述:

  
      
  • 使用减法赋值运算符( - =)取消订阅事件:

         

    publisher.RaiseCustomEvent - = HandleCustomEvent;

  •   
     

当所有订阅者都取消订阅活动时,该活动   发布者类中的实例设置为null。