알려진 문제가있는 프로젝트에 들어갑니다. 응용 프로그램이 GC.WaitForPendingFinalizers
로 전화를 걸면 중단됩니다. 명백한
솔루션
해결 방법은 WaitForPendingFinalizers
호출을 제거하는 것이지만 불행히도 이것은 타사 어셈블리에서 수행되므로 제거가 옵션이 아닙니다.Final Finalizer 소스 확인 중
대신 문제의 근원을 찾고 차단자가 누가 차단하는지 확인하고 싶습니다. 그러나 코드베이스는 크고 막 들어 오기 때문에 친숙하지 않기 때문에 어디 까지나 직감이나 직감이 전혀 없습니다. 이것은 도구를 사용하여 찾을 필요가 있음을 의미합니다.
그래서 제 질문은 다음과 같습니다
- 는 종료 자 큐를 반복하는 프레임 워크/EE 스레드 Studio에서보기 스레드에 표시됩니까? 이것에 대한 스택 추적은 우리가 걸려있는 곳을 찾기 위해 먼 길을 갈 것입니다.
- 파이널 라이저와 그 뿌리가 보류중인 도구를 보여줄 수 있습니까? (CF 프로젝트입니다 만,이 도구를 찾기 위해 다양한 경로를 이용할 의향이 있습니까?)
- 누구나 공유하고 싶은 생각이나 경험이 있으면 도움이 될 것입니다.
"GC Finalizer Thrad"는 아니지만, 전체 프레임 워크 아래에 존재한다고해서 적어도 코드베이스의 CF-> 데스크탑 포트에 대한 도전을 들게 할 것입니다 (인터페이스가 잘 연결되기를 바랍니다). – ctacke
그냥 생각이지만 어딘가에 dtor를 삽입하고 중단 점을 넣으면 어떨까요? 그 스레드에서 휴식해야합니다. –
나는 내가 시도 할 것이라고 확신하는 좋은 생각이다. 감사. – ctacke