У меня есть проблема в моем приложении C # .NET, которую я не могу понять, как решить. У меня есть объект, который имеет метод под названием «Load». Если объект успешно загружен, запускается одно событие. Если объект не загружается, запускается другое событие. Эта сущность определяется следующим образом:
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. Хотя я использую "- =". Что я делаю неправильно? Как очистить все обработчики событий на объекте, чтобы я мог по существу сбросить их?
Спасибо!