2012-08-10 21 views
6

Assembly.GetManifestResourceStream yöntemini kullanarak gömülü derleme kaynaklarına erişirken, geri döndükten sonra Stream'u kapatmanın iyi bir uygulama olduğunu düşünmüştüm.Assembly.GetManifestResourceStream tarafından döndürülen akışları kapatmalı mıyım?

http://msdn.microsoft.com/en-us/library/ms950960.aspx

// Get the stream that holds the resource 
// NOTE1: Make sure not to close this stream! 
// NOTE2: Also be very careful to match the case 
//  on the resource name itself 
Stream stream = 
    assem.GetManifestResourceStream("Azul.jpg"); 

// Load the bitmap from the stream 
this.BackgroundImage = new Bitmap(stream); 

comment burada makale neden bahsedilmemektedir olsa akışı , kapalı gerektiğini söylüyor: Ancak, ben sadece aşağıdaki makalede şey gördü. Google’daki aramalar hiçbir şey içermemektedir. Bazı insanlar bu akışı kapatıyor gibi görünüyor, diğerleri çöp toplayıcının onunla ilgileneceğini söylemiyor.

Assembly.GetManifestResourceStream ile gönderilen akışları kapatmalı mıyım? Yapmamam gereken belirli bir sebep var mı?

cevap

4

Bu yorum, kapatmanızı istemiyor çünkü bir Bitmap nesnesi oluşturmaya devam ediyor. Genellikle, işlemi bitirdikten sonra akışları kapatmanız gerekir veya uygulamanız bellek sızıntılarına maruz kalır.

+1

Bundan bir bitmap oluşturmak için devam ediyor, ancak bitmap'i oluşturduktan sonra * neden hala kapatmıyor *? – Jez

+0

Örnek, Bitmap'in bir Windows Formunun arka plan görüntüsü olarak kullanılmasından dolayı, Bitmap'in (ve temel akışın) Formun ömrünün tamamı boyunca gerekli olması gerekir. Maalesef, IDisposable nesnelerini düzgün bir şekilde nasıl yöneteceğinizi gösteren çok iyi bir örnek değildir. –

İlgili konular