为什么要在事件处理程序中调用相同的事件

Why invoke the same event in the event handler

提问人:w97802 提问时间:7/3/2023 更新时间:7/3/2023 访问量:27

问:

背景

我对下面关于事件和事件处理程序的用例感到困惑。

在构造函数中,我有代码,其中:

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 有事件处理程序,则触发该事件(这意味着将触发调用列表中的操作)

  • 如果我在上面的理解有误,请纠正我

我不明白的

  • 为什么要在事件处理程序中引发事件?这不会导致递归调用吗?(我想这不会是递归调用,因为它已经在生产代码库中,但我不明白为什么)也许在这种情况下它有不同的含义?

任何帮助将不胜感激。

C# .NET 事件 事件处理

评论

0赞 Charlieface 7/3/2023
是的,它看起来是递归的。调试时发生了什么?
0赞 Guru Stron 7/3/2023
在我看来是递归的。你能分享更多代码吗?

答: 暂无答案