varsayılan olarak Stream
böyle FileStream
gibi birkaç istisna dışında Dispose
yöntemde Flush()
çağırmaz değişir. Bunun nedeni, bazı akış nesnelerinin, arabellek kullanmadıkları için Flush
numaralı aramaya gerek duymamalarıdır. Bazıları, MemoryStream
gibi, hiçbir işlem yapılmadığından emin olmak için yöntemi geçersiz kılar (bunu op-op yapmak).
Bu, o sırada fazladan aramayı istemediyseniz, kullanmakta olduğunuz Stream
alt sınıfının, aramayı Dispose
yönteminde uygulayıp uygulamadığını ve gerekip gerekmediğini kontrol etmeniz gerektiği anlamına gelir. kıl payı kullanmanın
using (FileStream fS = new FileStream(params))
using (CryptoStream cS = new CryptoStream(params))
using (BinaryWriter bW = new BinaryWriter(params))
{
doStuff();
//from here it's just readability/assurance that things are properly flushed.
bW.Flush();
bW.Close();
cS.Flush();
cS.Close();
fS.Flush();
fS.Close();
}
sonu: Bazı insanlar kendi kullanarak tabloların sonunda
Close()
diyoruz nasıl benzer -Ne olursa olsun, bu iyi bir fikir sadece okunabilirlik için yine de çağırmak olabilir? Sadece akımın onu aldığını biliyorum ve her seferinde son olarak yakın metodu diyorum. –
Bu gerekli değildir, Dispose her zaman akışı kapatır ve Close önce akışı temizler. – nos
@FelixCzylwik: Eğer kullanım sonu arayacak olsaydı Kapat, açık akış tonlarca olur ve dışarıda SQLConnections açar ...: D –