문제

나는 어제이 예외를 만났다 :

Win32Exception: Fehler beim Erstellen des Fensterhandles

번역 할 수 있습니다 :

Win32Exception: Error while creating the windowhandle

나는 이것을 해결하는 방법을 알고있다 (심지어 짧은 썼다 블로그 게시물 주제 - 독일어)

그러나 나는 내 응용 프로그램이 어디에 있지 않을지 모르겠다.

인스턴스를 감지 / 찾는 방법이 있습니까?

  • 구현하다 IDisposable
  • 가지다 Parent == null

이 제약 조건을 일치시키는 객체는 좋은 후보자 인 것 같습니다.

도움이 되었습니까?

해결책

괜찮은 메모리 프로파일 러는 제어 인스턴스를 보여줍니다. 그들은 쓰레기를 수집하지 않으며, 손잡이 속성은 그들을 살아있게합니다. 그들 중 10,000 명이있을 것입니다. 작업 관리자와 함께 볼 수 있고 View + Select 열을 사용하고 사용자 객체를 선택하십시오. 앱을 테스트 할 때 카운트 증가를 보면 괜찮은 힌트를 제공해야합니다.

코드 검토도 먼 길을 가야합니다. 창을 새는 방법은 많지 않습니다. 먼저 Controls.clear () 또는 controls.remove/at ()를 호출하는 가장 일반적인 경우를 찾으십시오. 다음 보통 사례는 SystemEvents 클래스이며 이벤트를 명시 적으로 구독해야합니다. 나머지는 찾기가 쉽지 않으므로 프로파일 러가 필요합니다.

런타임에 손잡이를 찾는 것은 기술적으로 반사 가능합니다. 핸들은 System.Internal.HandleCollector.HandleTypes []에 저장됩니다. 글쎄, 기술적으로.

다른 팁

구현하는 모든 객체 IDisposable a Dispose 방법. 이 방법은 더 이상 객체가 필요하지 않을 때 호출해야합니다. 단일 방법으로 만 사용됩니까? using 진술 (전화 Dispose 자동으로). 클래스의 회원 변수 인 경우 클래스는 구현해야합니다. IDisposable 그 자체. fxcop 이에 대한 점검 규칙이 있습니다.

그들이 수집되지 않은 경우 다른 개체가 당신의 컨트롤을 참조하기 때문에, 처분하거나 부모를 널로 부르지 않으면 충분합니다. 어쩌면 당신은 이벤트에 붙어 있고 그들로부터 벗어나지 않을 수도 있습니다.

특히 부착자가 포함하지 않는 컨트롤에서 이벤트에 첨부 된 경우를 확인하십시오.이 경우 컨트롤을 처리 할 때 항상 이벤트를 분리해야합니다. 컨트롤이 여전히 첨부 장치에 의해 참조되지 않으면 그렇지 않습니다. 출시됩니다

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