我在我的C#.NET應用程序中遇到一個挑戰,我無法弄清楚如何解決。我有一個名爲「Load」的方法。如果對象成功加載,則會觸發一個事件。如果對象加載失敗,則會觸發另一個事件。這個實體定義如下:C# - 事件處理程序粘在內存中
public class MyEntity
{
public event EventHandler Load_Succeeded;
public event EventHandler Load_Failed;
public void Load()
{
/*
Asynchronously load the entity code here.
*/
}
private void Load_Completed(IAsyncResult result)
{
// Fire Load_Succeeded or Load_Failed
}
}
現在,如果裝載失敗,我將對象存儲在獨立存儲嘗試以後加載它。當我嘗試以後加載對象,我有以下代碼:
MyEntity myEntity = GetFromIsolatedStorage();
myEntity.Load_Failed -= new EventHandler(myEntity_Load_Failed);
myEntity.Load_Failed += new EventHandler(myEntity_Load_Failed);
myEntity.Load_Succeeded -= new EventHandler(myEntity_Load_Succeeded);
myEntity.Load_Succeeded += new EventHandler(myEntity_Load_Succeeded);
myEntity.Load();
是,當我運行通過從分離的存儲中加載的實體加載代碼,原始Load_Failed和Load_Succeeded事件處理程序被執行的奇數部分。即使我正在使用「 - =」。我究竟做錯了什麼?如何清除對象上的所有事件處理程序,以便我可以重置它們?
謝謝!
從您的示例代碼中,舊的和新的「失敗」處理程序都稱爲「myEntity_Load_Failed」,那麼如何判斷它是被調用的「原始」處理程序? – Gabe