提问人:w97802 提问时间:7/3/2023 更新时间:7/3/2023 访问量:27
为什么要在事件处理程序中调用相同的事件
Why invoke the same event in the event handler
问:
背景
我对下面关于事件和事件处理程序的用例感到困惑。
在构造函数中,我有代码,其中:
ProductUpdate 被声明为事件 - 并且public delegate void ProductUpdateEvent(object? sender, EventArgs e);
ProductUpdateEvent += (sender, args) => {
feedConnector.getPrice(Products);
ProductUpdateEvent?.(this, EventArgs.Empty);
}
我的理解
我知道这部分的意思是:ProductUpdateEvent += (sender, args) => { ...}
- RHS lamba 表达式将添加到 LHS ProductUpdateEvent 的调用列表中
- 因此,每当 LHS ProductUpdateEvent 发生时,都会触发 RHS lamba 表达式
ProductUpdateEvent?.(this, EventArgs.Empty)
表示如果 ProductUpdateEvent 有事件处理程序,则触发该事件(这意味着将触发调用列表中的操作)
- 如果我在上面的理解有误,请纠正我
我不明白的
- 为什么要在事件处理程序中引发事件?这不会导致递归调用吗?(我想这不会是递归调用,因为它已经在生产代码库中,但我不明白为什么)也许在这种情况下它有不同的含义?
任何帮助将不胜感激。
答: 暂无答案
评论