C# 在事件内部引发事件

C# 在事件内部引发事件,c#,events,event-handling,C#,Events,Event Handling,我试图在另一个事件的触发器生成的代码完成工作后,立即触发一个事件。对我来说,这意味着我必须在上述代码的末尾触发第二个事件 这里的第一个事件直接取自我正在使用的Vimba Camera API,它工作得非常好。我读了一些关于如何正确调用事件()的内容,但是我无法使第二个事件正常运行。我可能误解了什么,但是什么 以下是我所写内容的伪代码版本: public partial class Form1 : Form { public delegate void SecondEventHandler

我试图在另一个事件的触发器生成的代码完成工作后,立即触发一个事件。对我来说,这意味着我必须在上述代码的末尾触发第二个事件

这里的第一个事件直接取自我正在使用的Vimba Camera API,它工作得非常好。我读了一些关于如何正确调用事件()的内容,但是我无法使第二个事件正常运行。我可能误解了什么,但是什么

以下是我所写内容的伪代码版本:

public partial class Form1 : Form
{
    public delegate void SecondEventHandler(int[] myData);
    public event SecondEventHandler SomethingHappened;

    //Doing a lot of things irrelevant here

    myObj.OnFirstEvent += new Obj.OnFirstEventHandler(this.OnFirstEvent);

    private void OnFirstEvent(Data data)
    {
        //Doing things, and preparing myData
        SomethingHappened += new SecondEventHandler(HandleSomethingHappened);
    }

    void HandleSomethingHappened(int[] myData)
    {
        //Working with myData
    }
}

如果要引发附加到第二个事件的方法:

    private void OnFirstEvent(Data data)
    {
        //Doing things, and preparing myData
        var h = SomethingHappened;
        if(h != null)
            h(pass your int[] parameter)
    }

事实上,实现这一目标的最简单但最干净的方法是继续传球方式<代码>OnFirstEvent(数据数据)应该变成
OnFirstEvent(数据数据,动作延续器)
。只要它不为null,代码就会调用它


然而,我警告您:不要让它增长并传播到您的代码中。从长远来看,很难调试和维护。如果您希望广泛使用这种方法,那么请查看
反应式扩展

,您应该提供一个工作示例来说明您的问题,您需要解释在运行代码时具体发生了什么,以及这与您希望发生的情况有何不同。您不调用出现的
handlesomethinghapped
方法,只需将其注册到
SomethinHappend
事件。为什么不直接调用出现在
OnFirstEvent
末尾的
handlesomething