2013-03-16 220 views
1

我需要取消订阅我的活动中订阅的所有代理人。但我发现有两种方法可以做到这一点..事件取消订阅

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

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

    //second 
     doE = null; 
    } 
} 

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

回答

1

第一种方法非常正确。作为MSDN状态:

  • 使用减法赋值运算符( - =)从事件退订:

    publisher.RaiseCustomEvent - = HandleCustomEvent;

当所有用户都从事件退订,在发布类的事件 实例设置为null。