为了账号安全,请及时绑定邮箱和手机立即绑定

在事件中引发事件

在事件中引发事件

C#
红颜莎娜 2021-06-03 06:32:41
一旦由另一个事件的触发器产生的代码完成工作,我试图让一个事件触发。对我来说,这意味着我必须在所述代码的末尾触发第二个事件。这里的第一个事件直接取自我正在使用的 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    }}
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

实际上,实现这一目标的最简单但最干净的方法称为continuation-passing-styleOnFirstEvent(Data data)应该成为OnFirstEvent(Data data, Action<int[]> continuator). 只要它不为空,您的代码就会调用它。

但是我警告您:不要让它增长并遍布您的代码。从长远来看,很难调试和维护。如果您希望广泛使用这种方法,请查看reactive extensions.


查看完整回答
反对 回复 2021-06-05
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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


    private void OnFirstEvent(Data data)

    {

        //Doing things, and preparing myData

        var h = SomethingHappened;

        if(h != null)

            h(pass your int[] parameter)

    }


查看完整回答
反对 回复 2021-06-05
  • 2 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信