The process cannot access the file because it is being used by another process hatası ve çözümü

Merhaba arkadaşlar,

Bir proje kapsamında projeye yüklenen resim, belirli ölçülerde bir dizi işlem yapılarak farklı klasörlere kayıt edilmesi gerekiyordu. Örneğin: 1024x768px’lik bir fotoğraf 3 ayrı boyutta (150×150, 60×60, 30×30, vs..) UserFiles/Images/ klasörüne atılacak gibi düşünebilirsiniz.

Bu işlem sonlandığında ise ilk yüklenen orjinal resmi silmem gerekiyordu. (1024x768px’lik olan)

İşte tam bu noktada File.Delete() metodu çalıştırıldığında “The process cannot access the file because it is being used by another process” hatası ile karşılaştım.

Bu hatanın sebebi, işlemler tamamlanmasına rağmen .net dosyamızı işlem durumunda/sırasında tutuyor. Fakat ben çoktan tüm işlemlerimi bitirmiş, gerekli dosyaları gerekli klasörlere kayıt etmiştim bile 🙂

Sorunun çözümü için birçok farklı yol ve yöntem denemedim ama bir türlü sonuca erişemedim.

İşte tam bu noktada devreye GarbageCollector‘u soktum 🙂 Öncelikle kuyrukta bekleyen işlemleri toparla ( GC.Collect() ) ardından bu iş listesine iş parçacıklarını boşalt geçerli işi ( Orjinal dosyayı silme işlemini) askıya al/bitir.

Sonra tekrardan File.Delete metodu ile orjinal resmimi gönül rahatlığı ile silebildim.

Biraz karışık anlatmış olabilirim ama örnek method’u aşağıdan incelerseniz, net olarak anlaşılacaktır.

Umarım aynı sorunu yaşayanlara yardımcı olmuştur. Bir sonraki yazımda görüşmek üzere

Örnek Methodumuz

One thought to “The process cannot access the file because it is being used by another process hatası ve çözümü”

Bir cevap yazın