一旦由另一個事件的觸發(fā)器產(chǎn)生的代碼完成工作,我試圖讓一個事件觸發(fā)。對我來說,這意味著我必須在所述代碼的末尾觸發(fā)第二個事件。這里的第一個事件直接取自我正在使用的 Vimba 相機 API,它運行良好。我閱讀了一些關(guān)于如何正確調(diào)用事件的內(nèi)容(特別是這里的第一個 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條經(jīng)驗 獲得超8個贊
實際上,實現(xiàn)這一目標的最簡單但最干凈的方法稱為continuation-passing-style。OnFirstEvent(Data data)
應(yīng)該成為OnFirstEvent(Data data, Action<int[]> continuator)
. 只要它不為空,您的代碼就會調(diào)用它。
但是我警告您:不要讓它增長并遍布您的代碼。從長遠來看,很難調(diào)試和維護。如果您希望廣泛使用這種方法,請查看reactive extensions
.

楊__羊羊
TA貢獻1943條經(jīng)驗 獲得超7個贊
如果要引發(fā)附加到第二個事件的方法:
private void OnFirstEvent(Data data)
{
//Doing things, and preparing myData
var h = SomethingHappened;
if(h != null)
h(pass your int[] parameter)
}
- 2 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報
0/150
提交
取消