Bir akış açıp, akıştaki verileri yeniden seri hale getiriyorum. Ancak, SavedEventSet nesnesine bir üye ekledim, bu yüzden şimdi eski bir dosyayı açmaya çalıştığımda, istisna serisini seri hale getirme satırına atar.İstisna ettikten sonra bir akışın kapatılması
Bu benim için sorun değil (şimdilik) ancak sorun şu ki, özel durumla başa çıkıyorum, ancak hiçbir zaman akışı kapatmıyor (akış kapatılmadan önce istisna oluştu), bu yüzden dosyayı yeniden açmaya çalıştığımda, izin vermez çünkü kullanımda.
Bu özel durumdan sonra akışı nasıl kapatırım? Stream.Close() öğesini catch'a veya son olarak koyarsam, atanmamış bir yerel değişkene erişmeyi denemekten şikayet eder. Kötü bir uygulama açtığını biliyorum sadece orada olduğunu biliyorum rastgele bir dosyayı açmak için. Boş bir kurucuya benzeyecek şekilde bir akış açmanın herhangi bir yolu var mı, böylece atanmış gibi görünecek?
Teşekkür Try bloğundan önce null
SavedEventSet sES;
OpenFileDialog oFD = new OpenFileDialog();
Stream stream;
BinaryFormatter bF;
try
{
oFD.InitialDirectory = this.path;
oFD.Title = "Open Event Saved File.";
oFD.ShowDialog();
if(oFD.FileName.Contains(".sav"))
{
stream = File.Open(oFD.FileName, FileMode.Open);
bF = new BinaryFormatter();
sES = (SavedEventSet)bF.Deserialize(stream);
stream.Close();
}
}
catch (Exception ex)
{
stream.Close();
/*handle Exception*/
}
+1. Sahnelerin arkasında bir deneme/yakalama bloğuna derler ve "Dispose()" olarak adlandırılır, yani "IDisposable" uygulamasının tüm uygulayıcılarında kullanılabilir. – STW
Katılıyorum, bu tam olarak 'using' bloğu . – auujay
Teşekkürler :) Kullanım bloğunu bilmiyordum bile. – EatATaco