Şimdi Ara

Dosya Kopyalama İşlemi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
11
Cevap
0
Favori
1.178
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar ufak bir program yapmam gerekti çok iyi değilim bu konuda. Çözüm için baya aradım ama tam aradığımı bulamadım. Lafı uzatmadan konuya geçeyim.

    Pic1 ve Pic2 iki resim var. Pic1 şuan gösterilen resim. Ancak ben openfiledialog ile seçtiğim Pic2 resmini Pic1'le değiştirmek istiyorum.

    PictureBox1.Image = Nothing
    My.Computer.FileSystem.CopyFile("C:\Resim\Pic2.jpg","C:\Resim\Pic1.jpg", Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.UICancelOption.DoNothing)

    Bunu yaptığımda aşağıdaki hatayı alıyorum.

    Klasör veya dosya başka bir programda açık olduğundan bu eylem gerçekleştirilemiyor.

    Bu sorunu nasıl çözerim?



  • Gösterilen Pic1 ram de açık olduğu için değiştirmene izin vermiyor. Bu da normal bişey. Pic1'i hangi program kullanıyor peki. Yazdığın program mı ?
  • kreat kullanıcısına yanıt
    Evet. O sırada gösterimde olan resmi değiştirmek istiyorum. O yüzden picturebox içini boşaltıyorum resmi değiştirmeden önce ama yinede açık gibi göründüğü için olmuyor. Bunu nasıl çözebilirim?
  • quote:

    Orijinalden alıntı: erdem552

    Evet. O sırada gösterimde olan resmi değiştirmek istiyorum. O yüzden picturebox içini boşaltıyorum resmi değiştirmeden önce ama yinede açık gibi göründüğü için olmuyor. Bunu nasıl çözebilirim?
    Hocam dosya kopyalama methodunu neden kullanıyorsun? Açık olan Pic1.jpg nin üzerine dosya yazmaya uğraşıyorsun.

    Gelen dosya yolunu değişkene atayıp, aşağıdaki gibi kullan.

    Picturebox1.Image = Image.FromFile(gelendosya)
    Ya da
    Picturebox1.Image = Image.FromFile(OpenFileDialog1.FileName)



    < Bu mesaj bu kişi tarafından değiştirildi kreat -- 11 Mart 2019; 8:19:11 >
  • kreat kullanıcısına yanıt
    Programdaki amaç şu;

    Her hata için ayrı ayrı olay oluşturuyorum. Her hatanın açıklaması ekleyeni, bilgileri, resimleri farklı. İstenen hata seçildiğinde o hatanın resmini gösterecek. Olduki programa atarken yanlış resim seçildi yada resimle ilgili bir güncelleme yapıldı(Hata işaretleme yada resim üzerine bilgi ekleme) o durumda resmin güncellenmesini istiyorum.

    Program ortak klasör üzerinden çalıştığı için işlem localde olsa adres olarak o değişkeni belirlerim. Ancak ortak klasöre seçilen resmi kopyalatıyorum güncelleme gerektiğinde resmi değiştirmek istedğim için o sırada program üzerinde açık olduğundan bu hatayı veriyor.



    < Bu mesaj bu kişi tarafından değiştirildi erdem552 -- 11 Mart 2019; 10:20:22 >
  • Nette biraz araştırdım benzer sorunları yaşayanlar var. Kullanımda olan dosyayı serbest bırakmak için dispose() metodu kullanılıyor.


    If Me.PictureBox1.Image Is Nothing Then

    //kopyalama işlemi

    Else

    Me.PictureBox1.Image.Dispose()

    End


    Diğer bir yöntem ise

    'Load your image file, essentially locking access to it

    Dim BMP As Bitmap = Bitmap.FromFile("C:\Users\Jay\Desktop\test.jpg")

    'When assigning to your picture box, create a new bitmap

    PictureBox1.Image = New Bitmap(BMP)

    'Dispose of the original bitmap, freeing up access to the file

    BMP.Dispose()

    'Speed up garbage collection, releasing your file.
    GC.Collect()



    < Bu mesaj bu kişi tarafından değiştirildi kreat -- 11 Mart 2019; 11:35:37 >
  • kreat kullanıcısına yanıt
    İki yoluda denedim.

    Pb1.dispose deyince direk hataya düşüyor
    bmp.dispose deyince aynı şekilde dosya kullanımda hatası alıyorum.

    Oradaki Gc.collet olayını anlayamadım.
  • kreat kullanıcısına yanıt
    Sorunu çözdüm sandım açıklama yapmıştım buraya ama çözülmemiş maalesef...



    < Bu mesaj bu kişi tarafından değiştirildi erdem552 -- 11 Mart 2019; 14:7:34 >
  • Hocam müsait olunca pc ye vb express kurup bakarım. Hatayı google da arattınız mı?
  • kreat kullanıcısına yanıt
    Baya aradım ama bir şey bulamadım ondan konu açtım zaten.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.