我有一个从事件中正确分离 EventHandler 的小问题。这是我正在使用的内容:
在 UIButton 中:
public void HookEvent(Action<object, EventArgs> action)
{
Click += new EventHandler(action);
}
public void UnhookEvent(Action<object, EventArgs> action)
{
Click -= new EventHandler(action);
}
在主要:
UIButton button = new Button();
button.HookEvent(OnButtonClick);
button.UnhookEvent(OnButtonClick);
被挂钩的功能:
public void OnButtonClick(object sender, EventArgs e)
{
throw new Exception("Event Fired");
}
如果我注释掉它正确通过的 Unhook 行并调用 Exception ,则使用它。但是,如果我将其保留为如上所示,并且 Unhook 仍然存在......该功能仍然会触发。它不会解开它。如果我Click = null;
在该部分下方添加Click -= new EventHandler(action);
,则它按预期工作。这样做会导致在任何给定时间只允许一个函数被挂钩。
我唯一想到可能发生的事情是,自从我使用 Action<> 以来,正在传入该函数的新版本,但可惜我什至尝试将该函数作为变量存储在按钮内,当我去删除它时,if(storedAction == passedInAction)
结果为真。我不知道为什么这对我来说不会分离。
谢谢你们的时间!