C#.NETアプリケーションでは解決方法がわかりません。私は "Load"というメソッドを持つオブジェクトを持っています。オブジェクトが正常にロードされた場合は、1つのイベントが発生します。オブジェクトの読み込みに失敗すると、別のイベントが発生します。ロードが失敗した場合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