在事件中引发事件

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


这里的第一个事件直接取自我正在使用的 Vimba 相机 API,它运行良好。我阅读了一些关于如何正确调用事件的内容(特别是这里的第一个 anwer),但我无法让我的第二个事件正常运行。我可能误解了一些东西,但是什么?


这是我写的伪代码版本:


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

    }

}


红颜莎娜
浏览 121回答 2
2回答

largeQ

实际上,实现这一目标的最简单但最干净的方法称为continuation-passing-style。OnFirstEvent(Data data)应该成为OnFirstEvent(Data data, Action<int[]> continuator).&nbsp;只要它不为空,您的代码就会调用它。但是我警告您:不要让它增长并遍布您的代码。从长远来看,很难调试和维护。如果您希望广泛使用这种方法,请查看reactive extensions.

杨__羊羊

如果要引发附加到第二个事件的方法:&nbsp; &nbsp; private void OnFirstEvent(Data data)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; //Doing things, and preparing myData&nbsp; &nbsp; &nbsp; &nbsp; var h = SomethingHappened;&nbsp; &nbsp; &nbsp; &nbsp; if(h != null)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; h(pass your int[] parameter)&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP