2017-05-01 3 views
-4

블록을 사용하면 "렌더링 된"이미지는 "b"를 어떻게 처리합니까?외부 변수에서 블록을 사용하는 범위

Bitmap rendered; 

using(Bitmap b = new Bitmap(calcHeight, calcWidth)) 
{ 
    using (Graphics g = Graphics.FromImage(b)) 
    { 
     RenderMyBitMap(ref b); 
     rendered = b; 
    } 
} 
//Outside Using block 
DoSomeThingElseWith(rendered); 
+3

왜 직접 시도해 보지 않으시겠습니까? –

+0

'b'에 대한 참조가 있기 때문에 차고를 수집하지 않습니다. 'rendered'가 null로 설정되면 차고 수집의 다음주기가 사라집니다. –

+0

나는 어떤 오류도 보지 못했다. 메모리를 가득 채우고 있거나 (OOM 예외가 발생하기를 기다리고있는 경우) 찾지 못했거나 안전합니다. 까만 개구리 응답은 정당화되는 것을 보인다. 그러나 그것을 확인할 수 없습니다. –

답변

0

b 같은 인스턴스 변수 rendered 포인트. 당신이 using 블록 이후에 액세스하려고하면

조작이 삭제 된 개체에 수행 될 때 throw되는 예외 인 ObjectDisposedException를 얻을 것이다.

관련 문제