문제

Composite WPF 응용 프로그램에는 사용자가 컨트롤을 두 번 클릭 할 때 게시되는 이벤트가 있습니다. 모듈은 이벤트를 구독하고 필요할 때 조치를 수행합니다.

이 이벤트는 무작위로 작동을 멈추는 것 같습니다. 때로는 응용 프로그램을 실행할 때 문제없이 이벤트를 트리거 할 수 있습니다. 다른 경우에는 모듈이 이벤트 수신을 중단하기 전에 몇 번만 트리거 할 수 있습니다.

내가 디버거를 볼 때 Cal EventAggregator 여전히 이벤트가 있지만 이벤트에는 구독이 없습니다. 어떻게 EventAggregator 구독을 잃어 버리나요?

도움이 되었습니까?

해결책

구독을 제거하는 쓰레기 수집가라는 것이 밝혀졌습니다. 내부를 읽어야하지만 교체했을 때

this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(SomeFunction);

~와 함께

this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(
    SomeFunction, ThreadOption.UIThread, true);

작동하기 시작했습니다. UI 스레드 매개 변수는 내 문제가 아니었지만 다른 스레드의 경우 올바른 스레드에서 이벤트를 처리하는 것이 중요 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top