için dosyayı silinemiyor: "Başka bir işlem tarafından kullanıldığı için işlem '\ dosya adı' dosyasına erişemiyor"Aşağıdaki kod bu istisnayı atar MemoryMappedFile
Yeterince adil, ancak dosyanın silinebilmesi için okuyucu ve/veya mmf'yi kapatmanın doğru yolu nedir? MemoryMappedFile'ın bir close() yöntemine veya benzer bir şeye sahip olacağını düşünürdüm ama öyle değil.
Herhangi bir yardım büyük memnuniyetle karşılanacaktır. Teşekkürler.
mmf = MemoryMappedFile.CreateFromFile(filename,
System.IO.FileMode.OpenOrCreate,
"myMap" + fileNo.ToString(),
fileSize);
reader = mmf.CreateViewAccessor(0, accessorSize);
<do stuff>
File.Delete(filename);
DÜZENLEMELER: sadece bu sorunu yaşıyorum yıkıcı gibi
görünüyor. Dispose() başka yerlerde çağrıldığında iyi çalışır, ancak aşağıdakileri yaptığımda istisna atar. Okuyucu ve mmf açıkça sınıfın üyeleridir. Kurucu girildikten sonra dosya erişimine örtük bir şey mi oluyor?
reader.Dispose();
mmf.Dispose();
File.Delete(filename);
Bu nesne daha önce GCed kullanılmış olabileceğinden, bir sonlandırıcıda diğer nesneleri atmaya (veya erişmeye) çalışmamalısınız. –
Ancak, kapsam dışında kalmadan önce nesneleri temizleyebilmek için yıkıcı bir nokta değil mi? Yine de, bu sorunun kodun başka bir yerinde olduğunu düşündüğümde, bunun bir şey olduğunu düşünüyorum. Bu sadece yıkıcı bir sorun değil. – hdt
Sonlandırıcı, yönetilmeyen kaynakları temizlemektir; okuyucu ve mmf yönetilen nesneler ARE. – Guillaume