2017-05-01 11 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ブロックの後にそれにアクセスしようとすると、

操作が破棄されたオブジェクトに対して実行されたときにスローされる例外ですObjectDisposedExceptionを取得します。

関連する問題