2010-04-26 2 views
0

일부 사용자 정의 스트림 디코딩을 구현하려면 자체 DecoderFallback 및 DecoderFallbackBuffer 클래스를 생성해야합니다.내 DecoderFallbackBuffer 전문화에서 GetNextChar()가 반복적으로 호출되는 이유는 무엇입니까?

내 specilize 된 DecoderFallbackBuffer.Remaining 속성이 반환 할 문자가 더 이상 없음을 나타내는 경우에도 반복적으로 GetNextChar()를 호출하는 스트림 리더가 있다는 것을 알게되었습니다.

결국 스트림 리더는 무한 루프가됩니다.

왜 이런 일이 발생합니까?

답변

0

해결 방법은 Remaining 속성이 0 일 때 GetNextChar() return (char)을 0으로 만드는 것입니다. 이는 MSDN 설명서에서 분명히 명확하지 않습니다.

내가 내부적으로, 독자는 어쨌든

while (theChar = dfb.GetNextChar() <> 0){} 

대신

while (dfb.Remaining > 0){ theChar = dfb.GetNextChar(); } 

처럼 뭔가를하고 있다는 생각, 잘 작동하는 것 같다. 이 .NET 클래스를 SO에 사용하는 것에 대한이 설명에 기여하기를 원합니다.

관련 문제