c# 프로젝트에서 코드 분석기를 돌렸더니, dispose를 두 번 하지 말라는 경고가 떴다.
그래서 알아 봤더니, using 구문안에 using을 또 사용할 때 나는 경고였다.
using (Stream stream = new FileStream("file.txt", FileMode.OpenOrCreate))
{
using (StreamWriter writer = new StreamWriter(stream))
{
// Use the writer object...
}
}
이 이슈를 해결하려면 다음과 같이 처음 오브젝트는 using 대신 try catch로 예외 처리를 해 줘야 한다.
Stream stream = null;
try
{
stream = new FileStream("file.txt", FileMode.OpenOrCreate);
using (StreamWriter writer = new StreamWriter(stream))
{
stream = null;
// Use the writer object...
}
}
finally
{
if(stream != null)
stream.Dispose();
}
코드가 훨씬 더 복잡하고 귀찮아졌지만, 이게 맞는 방법이라고 한다.
'개발 > C#' 카테고리의 다른 글
[C#] BlockingCollection<T>을 이용한 생산자 소비자 패턴 구현 (0) | 2021.03.30 |
---|---|
비주얼 스튜디오 c# 데스크탑 앱에서 7-zip 사용하기 (0) | 2021.02.16 |
C# 에서 Dispose의 개념과 궁금했던 몇가지 사항 (0) | 2021.01.26 |