1. Ana Sayfa
  2. C Sharp

[KESİN ÇÖZÜM] File İşlemlerinde “İşlem, Başka Bir İşlem Tarafından Kullanıldığından ‘…’ Dosyasına Erişemiyor”

[KESİN ÇÖZÜM] File İşlemlerinde “İşlem, Başka Bir İşlem Tarafından Kullanıldığından ‘…’ Dosyasına Erişemiyor”
+ - 0

[KESİN ÇÖZÜM] File İşlemlerinde “İşlem, Başka Bir İşlem Tarafından Kullanıldığından ‘…’ Dosyasına Erişemiyor” Hatası ve Çözümü dersi ile karşınızdayım. Bu sorun her zaman karşımıza çıkan bir sorundur. Bu derste bu soruna kesin olarak çözüm getireceğiz.

[KESİN ÇÖZÜM] File İşlemlerinde “İşlem, Başka Bir İşlem Tarafından Kullanıldığından ‘…’ Dosyasına Erişemiyor” Hatası

Hepimizi zaman zaman projelerimizde dosya okuma, yazma ve silme gibi işlemleri kullanırız. Hatta çok sıkta kullanabiliriz. Bir metin belgesi okuma, bir resim gösterme vs. vs. dışarıdaki herhangi bir dosyayı kullandığımızda bu hatayı en az bir kere almışızdır. Bende onlardan biriyim. Üstelik her seferinde bu hata ile boğuştum durdum. Ancak sonunda en garanti olan ve bu hatanın çıkma ihtimali olmayan bir yol buldum.

Öncelikle File Sınıfından genelde kullandığımız komutlara bakalım bir bakalım.

File.Delete();
File.Create();
File.Open();
...
...

Bu şekilde bir çok kullanım şeklimiz var.

Ancak sadece bu değil. Örneğin bir PictureBox nesnesinde dışarıdan seçtiğimiz bir resmi gösterdiğimizde o resmi kullanıma almış oluyoruz. O resim o anda başka programlar tarafından kullanılamaz hale geliyor. Buna TXT, XML, EXCEL vs. vs. bir çok dosya tipini ekleyebiliriz.

Şimdi gelelim kesin çözümümüze…

 

File İşlemlerinde “İşlem, Başka Bir İşlem Tarafından Kullanıldığından ‘…’ Dosyasına Erişemiyor” ÇÖZÜM

Bu hatanın önüne geçmenin kesin çözümü FileStream kullanmaktır. FileStream ile okuma yazma işlemleri yaptığımızda asla bu hata çıkmayacaktır. Çünkü her seferinde başlattığımız işlemi kapatabiliyoruz. Yani bir dosyayı okuyoruz, işliyoruz ve işimiz bittiğinde kapatıyoruz. Olay bu kadar. Şimdi size örnek bir kod vereyim.

FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
pictureEdit1.Image = Image.FromStream(fs);
fs.Flush();
fs.Close();

///...

Image img = (Image)pictureEdit1.Image.Clone();
img.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);

///...
            
FileStream fs = new FileStream(path, FileMode.OpenOrCreate);
pictureEdit1.Image = Image.FromStream(fs);
fs.Flush();
fs.Close();

///...

File.Delete(path);

 

  1. Öncelikle path değişkenindeki yolda yer alan resmi picturebox nesnesinde gösterdim.
    1. BUrada ilgili resmi kullanıma aldık. Artık o resmi silme ya da taşıma gibi bir işlem yapamayız.
  2. PictureBox nesnesindeki resmi bir image türü değişkene yükledim
  3. Sonra PictureBox’taki resmi yeni bir resim olarak kaydettim.
  4. FileStream ile yeni kaydettiğim resmi okudum
  5. Picture Edit nesnesinde yeni resmimi gösterdim
  6. FileStream’ı boşalttım ve kapattım
  7. Dosyayı sildim.

Burada eğer arada file stream kullanmamış olsaydım o resmi silmem mümkün olmayacaktı. Çünkü yukarıdaki hatayı vermiş olacaktı.


Bu dersimizde bu kadardı arkadaşlar. Diğer derslerimizde görüşmek üzere…

C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.

Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…

Takipte ve Sağlıcakla kalın. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)