事件退订(Event unsubscribe)

2019-09-29 12:24发布

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

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

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

    //second
       doE = null;
    }
}

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

Answer 1:

第一种方法是完全正确的。 正如MSDN指出:

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

    publisher.RaiseCustomEvent - = HandleCustomEvent;

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



文章来源: Event unsubscribe