문제

XML 파일의 파일 이름을 정의하는 문자열 속성이 있습니다. 사용자 가이 파일 이름을 속성에 입력하면 'filename = value'를 설정 한 후 Parsexml () 기능을 즉시 호출하여 XML 파일의 데이터로 데이터를 채우려면 디자이너에 표시됩니다. 어떤 이유로, 속성 세터 에이 함수 호출이있을 때, 세터는 속성을 변경할 때마다 매번 두 번 부름을 받고, 두 번째 시간은 빈 문자열로 오류를 일으킨다. 왜 이것을하고 있습니까?

public String FileName
{
    get { return fileName; }
    set 
    {
        fileName = value;
        parseXmlFile();
    }
}
도움이 되었습니까?

해결책

짧은 대답 :해서는 안됩니다. 더 도움이됩니다 : 어쩌면 두 번째 전화를 직접 일으킬까요? 세터에 디버거를 설정하고 두 번째로 호출되는 경우 호출 스택을 검사하십시오.

다른 팁

나의 초기 추측은 parcexml ()의 무언가가 그 세터를 다시 호출하고 있다는 것입니다. parcexml ()에 대한 호출을 제거하면 어떻게됩니까? 세터를 정확히 알기 위해 실행중인 코드를 디버깅하고 스텝핑 해 보셨습니까?

중단 점을 때리면 filename = value; 그리고 그것을 누르십시오. Callstack 창은 무엇을 보여 주나요?

당신이 가진 문제를 완전히 제외하고, 속성 세터 뒤에 비싼 IO 운영을하는 것은 약간의 킬러입니다.

파일을 열고 물건을 구문 분석하려면 IO를 수행하고 메소드가 작업을 성공적으로 완료 할 때이 속성 (파일 이름)을 설정하는 별도의 방법을 사용하는 것이 좋습니다.

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