У меня есть вызов в моем приложении C# .NET, и я не могу понять, как его решить. У меня есть объект, который имеет метод под названием «Загрузка». Если объект загружен успешно, запускается одно событие. Если объект не загружается, запускается другое событие. Эта сущность определяется следующим образом: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