有些时候需要自己控制事件的响应,这时可以用列表将注册的委托保持起来,通过遍历这个列表去执行,例如:当委托的函数返回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;
}