自定义事件的响应

时间:2023-01-01 18:03:09

有些时候需要自己控制事件的响应,这时可以用列表将注册的委托保持起来,通过遍历这个列表去执行,例如:当委托的函数返回true时就停止遍历。

    public delegate bool BoolDelegate();

    private List<BoolDelegate> mOnHomeButtonClick = new List<BoolDelegate>();

    public event BoolDelegate OnHomeButtonClick
    {
        add
        {
            lock (mOnHomeButtonClick)
            {
                mOnHomeButtonClick.Add(value);
            }

        }
        remove
        {
            lock (mOnHomeButtonClick)
            {
                mOnHomeButtonClick.Remove(value);
            }
        }
    }

当返回位True时退出:

foreach (var item in mOnHomeButtonClick)
{
    if (item()) break;
}