何かを確認したい - メソッドをイベントのサブスクライバーとして登録すると、次のようになります。
_serviceContext.ReadingEntity += new EventHandler<ReadingWritingEntityEventArgs>(_serviceContext_ReadingEntity);
次のように、イベントが発生したときに引き続き呼び出されたくない場合は、イベントのサブスクリプションからそのメソッドを登録解除する必要があります。
_serviceContext.ReadingEntity -= new EventHandler<ReadingWritingEntityEventArgs>(_serviceContext_ReadingEntity);
デリゲートをイベントのサブスクライバーとして登録すると、次のようになります。
public guy ThisMethod()
{
_serviceContext.ReadingEntity += delegate(object sender, ReadingWritingEntityEventArgs e)
{
};
}
そのメソッドのサブスクライバー リストからそのデリゲートを登録解除する方法はありません。したがって、この登録の範囲は、登録されているメソッドに限定されていると想定しています。つまり、ThisMethod によって呼び出されたメソッドで _serviceContext.ReadingEntity イベントが発生した場合、この登録は既に期限切れになり、デリゲート内のコードは無効になります。走る。これは正しいです?
ありがとう!
ps イベントハンドラーを登録する最初の「長い」方法にもスコープの制限があることを認識していますが、それについては少し漠然としています。ただし、私の主な質問は、デリゲート登録が上記の方法の外で存続するかどうかです。