Miért lesz érvénytelen a Bitmap Using után?
2014-10-25T08:43:41+02:00
2014-10-25T19:59:43+02:00
2022-08-18T02:41:53+02:00
LajGo
Sziasztok!

Amikor értéket adok a thumboutput változómnak, akkor minden rendben, de amint kilép a using- ból, érvénytelen paraméter lesz minden property-je. Mit rontottam el?
Bitmap thumboutput; using (var input = new Bitmap(file.InputStream)) {int width=200;int height=200; using (var thumb = new Bitmap(width, height)) using (var graphic = Graphics.FromImage(thumb)) { graphic.InterpolationMode = InterpolationMode.HighQualityBicubic; graphic.SmoothingMode = SmoothingMode.AntiAlias; graphic.PixelOffsetMode = PixelOffsetMode.HighQuality; graphic.DrawImage(input, 0, 0, width, height); using (var output = System.IO.File.Create(Path.Combine(HttpContext.Current.Server.MapPath("~/Images/"), count + "." + file.FileName.Split('.')[1]))) { thumb.Save(output, ImageFormat.Bmp); thumboutput = thumb; } } } return thumboutput;
Köszönöm!
Mutasd a teljes hozzászólást!
A USING felszabadítja azt ami benne van. Hiába adod át a thumboutput-nak, az csak egy referencia, a forrás akkor is megsemmisül.

Egy régi dilemmám, hogy a visszaadott Bitmap hogyan fog felszabadulni:
- Magától a GC által, mert a using nem kötelező, csak ajánlott, ha jól behatárolható az objektum érvényessége.
- Általam szabadul fel, a függvényen kívül, amikor már nem kell.

thumb using-ját vedd ki és menni fog.
Mutasd a teljes hozzászólást!

  • Mit rontottam el?

    Semmit. Nem tudod mit csinál a using. Nézz utána. Ennek így kell működnie.
    using Statement (C# Reference)
    Mutasd a teljes hozzászólást!
  • A USING felszabadítja azt ami benne van. Hiába adod át a thumboutput-nak, az csak egy referencia, a forrás akkor is megsemmisül.

    Egy régi dilemmám, hogy a visszaadott Bitmap hogyan fog felszabadulni:
    - Magától a GC által, mert a using nem kötelező, csak ajánlott, ha jól behatárolható az objektum érvényessége.
    - Általam szabadul fel, a függvényen kívül, amikor már nem kell.

    thumb using-ját vedd ki és menni fog.
    Mutasd a teljes hozzászólást!
abcd