一旦由另一个事件的触发器产生的代码完成工作,我试图让一个事件触发。对我来说,这意味着我必须在所述代码的末尾触发第二个事件。这里的第一个事件直接取自我正在使用的 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-style。OnFirstEvent(Data data)
应该成为OnFirstEvent(Data data, Action<int[]> continuator)
. 只要它不为空,您的代码就会调用它。
但是我警告您:不要让它增长并遍布您的代码。从长远来看,很难调试和维护。如果您希望广泛使用这种方法,请查看reactive extensions
.
杨__羊羊
TA贡献1943条经验 获得超7个赞
如果要引发附加到第二个事件的方法:
private void OnFirstEvent(Data data)
{
//Doing things, and preparing myData
var h = SomethingHappened;
if(h != null)
h(pass your int[] parameter)
}
- 2 回答
- 0 关注
- 120 浏览
添加回答
举报
0/150
提交
取消