簡體   English   中英

等待事件處理程序完成,然后繼續

[英]Wait for event handlers to complete before continuing

假設我有一個名為A的用戶控件,它執行以下操作:

Page_Load:
    List<object> myList = PrepareList();
    ListPrepared(this, new AArgs(myList)); // Event that lets subscribers modify the list.
    OperateOnAndDisplayList(myList);

A的實例保存在預訂ListPrepared事件並修改創建的列表的頁面中。 很顯然,我希望頁面的處理程序在操作並顯示列表之前完成,因為它正在修改列表以保持完整性。 我將如何實施呢? (或者這是一個可怕的想法,因為它公開了列表,因此需要外部元素具有該列表的知識才能對其進行修改?)

事件是同步引發的。 這意味着事件的所有訂閱者將在調用OperateOnAndDisplayList方法之前執行其代碼。 這也意味着,如果myList被任何事件訂閱者修改,則該修改也將對事件發布者可見。 如果這不是您想要的,則應在引發事件之前創建列表的副本,並且僅將副本與事件的EventArgs一起發送。

如果事件處理程序在所有代碼完成后返回,則無需擔心。 事件只是調用方法的一種方式。 它與異步操作沒有直接關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM