스트림 오프 흐름

 

文章; MemoryStream.Close () 또는 MemoryStream.Dispose ()

 

Close() 그리고  Dispose()A의 호출시  MemoryStream, 두 일을하는 역할 :

  • 오브젝트의 미래 실수로 사용이 예외가 발생합니다 있도록 배치 된 개체를 표시합니다.
  • 아마도 1  GC의 구현에 따라 조금 더 쉽게 GC의 작업을 할 수 있습니다 관리되는 개체에 릴리스 참조. (이것은 학문적 인 토론을위한 점과 유의 한 실제 영향을주지 않습니다 그래서 오늘의 GC 알고리즘에 그것은, 실제 차이가 없습니다.)

MemoryStream 당신이 기술적으로 폐기 할 필요가 없습니다, 처분에 관리되지 않는 자원을 가지고 있지 않습니다. 을 폐기하지의 효과는  MemoryStream 대략에 대한 참조를 삭제와 같은 일이  byte[] GC가 같은 방법으로 모두를 정리합니다 -.

나는 어느 하나를 호출합니까? 그것은 모두를 호출 할 필요가 있습니까?

Dispose() 스트림의 방법은  받는 직접 위임  Close() 방법 모두 정확히 같은 일을 할 수 있도록.

나는 이미 그들 중 하나를 호출 한 경우 다른 예외를 던질 것인가?

에 대한 문서 IDisposable.Dispose()  구체적으로는 전화를 안전 상태  Dispose() 개체에 여러 번 3 . (즉, 특정 클래스에 대한 사실이 아닌 경우 그 클래스 구현  IDisposable 의 계약을 위반하고,이 버그가있는 방식의 인터페이스를 제공합니다.)

모든 것을 말합니다 : 당신은 폐기 여부는 정말 큰 차이를 만들하지 않습니다  MemoryStream 여부. 이 가지고있는 유일한 진짜 이유  Close/ Dispose 에서 상속 때문에 방법은  Stream지원 스트림과의 계약의 일부로서 그 방법을 요구하는  수행  (예 : 파일이나 소켓 기술자 등) 관리되지 않는 리소스를 가지고 있습니다.

 

추천

출처www.cnblogs.com/Tpf386/p/11971695.html