2010-04-14 4 views

답변

16

using 블록은 IDisposable을 구현하는 모든 개체에서 Dispose()를 호출하는 try/finally 블록의 바로 가기입니다.

스트림 및 스트림 작성기의 경우 Dispose()는 일반적으로 수동으로 Close()를 호출합니다. using 블록이 당신을 위해 XmlWriter를 폐쇄 처리합니다,

protected virtual void Dispose(bool disposing) 
{ 
    if (this.WriteState != WriteState.Closed) 
    { 
     try 
     { 
      this.Close(); 
     } 
     catch 
     { 
     } 
    } 
} 

그래서 짧은 대답은 '예 : 반사판을 사용하여, 여기에 폐기의 XmlWriter를 방법입니다.

+0

그리고 이것은 실제로 내가보고있는 코드입니다. 모두 '닫기'라고 부릅니다. –

3

아니요, 별도로 호출 할 필요가 없습니다. 바로 사용 블록이있는 것입니다.

실행이 사용중인 블록을 종료하면 XmlWriter가 처리되고 내부에서 XmlWriter.DisposeXmlWriter.Close을 호출합니다.

3

하지만 ... XmltTextWriter.Close에 리플렉터() 표시 :

경우 (this.closeOutput) { this.stream.Close(); } this.Stream = null;

closeOutput 플래그는 settings.CloseOutput으로 설정되며 false 일 수 있습니다.

XmlTextWriter에서 "using"식을 사용할 때 핸들러가 사용 가능합니까?

+0

이제 빈 가상 함수를 보여줍니다 : public virtual void Close() {} – amuliar

관련 문제