1
하다면 this blog postWeakEventHandler의 버그는 무엇입니까?
에 WeakEventHandler을 발견하지만 그는 말한다 :
업데이트 : 네,이 깨진 알고있다. 이 작동하지 않는 것을 의미 버그 ...
입니다 및 버그 :(
public class WeakEventHandler<DT, T> where T : EventArgs
{
private WeakReference weakRefToOriginalDelegate;
public WeakEventHandler(EventHandler<T> originalDelegate)
{
weakRefToOriginalDelegate = new WeakReference(originalDelegate);
}
private void DoInvoke(object sender, T args)
{
EventHandler<T> originalDelegate = (EventHandler<T>) weakRefToOriginalDelegate.Target;
if (originalDelegate != null) originalDelegate(sender, args);
}
public static implicit operator DT(WeakEventHandler<DT, T> wd)
{
object o = Delegate.CreateDelegate(typeof (DT), wd, "DoInvoke");
return (DT) o;
}
}
사람이 WeakEventHandler 구현에 버그가 무엇인지 설명 할 수 있을까?
약한 이벤트의 구현을 찾고있는 것이 아니라 위에서 보여준 구현의 문제점을 이해하고 싶습니다. C#을 통해 CLR을 확인한 적이 있습니다. 위에서 설명한 것처럼 약한 이벤트 핸들러 구현과 거의 같습니다. Richter는 자신의 블로그에서 의도 한대로 작동하지 않는다고 말합니다. 따라서이 구현의 문제점이 무엇인지 알고 싶습니다. –
첫 번째 버전은 WeakReference를 참조 대리인 자체에 사용하는 차이점을 알지만 "수정 된 버전"은 WeakReference를 대리인의 참조 대상으로 사용합니다. 무슨 뜻이에요? 참조가 위임 할 때 WeakReference가 올바르게 작동하지 않습니까? –