3
IDisposable 또는 Finalizer 내에서 다음 패턴을 적용하려는 일부 이벤트가 기본 클래스에 있습니다.GetInvocationList를 사용하여 이벤트 핸들러 구독 취소
var onCategorizedMessage = this.OnCategorizedMessage.GetInvocationList().ToList();
foreach (var item in onCategorizedMessage)
this.OnCategorizedMessage -= item;
이벤트 당 한 번이 코드를 반복합니다.
메모리 누수를 방지하기 위해 이벤트 수신 거부를 적절하고 견고하게 처리 할 수 있습니까?
많은 경우에 실제로 문제가 아닙니다. 생산자가 소비자를 벗어나려고합니까? –
@BryanCrosby - 나도 몰라. HubTransport Agent를 만들고 있는데 호스팅 코드 내부에서 어떤 일이 일어날 지 모릅니다. http://msdn.microsoft.com/en-us/library/dd877026(v=exchg.140).aspx – LamonteCristo
논리적으로 말하면 탈퇴가 탈퇴자 자체의 책임이라고 생각합니다. 그 외에는 폐기 할 때 호출 목록을 지우는 데 많은 포인트가 없습니다. 그러나 폐기 될 때 (수신 거부자가 보낸) 이벤트의 구독을 취소하는 큰 포인트가 있습니다 (폐기 된 개체의 메서드에 대한 대리자가있는 이벤트의 호출 목록을 방지하기 위해). – SimpleVar