Soran
Listbox dosya sayısı

Soru
-
Server olarak kullanılan bir PC mizde yerel ip uzerinden ortak paylaşıma açılmış bir klasörümüz ve içinde dosyalarımız var normalde programımız bu klasörün içindeki dosyalar üzerinde işlem yapıyor (kaydet,sil,güncelle vb..) ve program açıldığında bu klasör içindeki dosyalar bir lisbox da listeleniyor ve hali hazırda dosya sayısı veriliyor.
şimdi benim istediğim bir pc den bu klasör üzerinde özellikle silme ve kaydetme esnasında işlem yapıldığında anlık olarak diğer programı açık tüm arkadaşlarda listbox larında bunu görmesi (dosyaların kaydedilmesi ve silinmesi) ve anlık dosya sayısının yenilenmesi
ben bunu basit bir timer mantığı ile yaptım ancak hali hazırda dosya sayısı listbox ta artıkca listbox sürekli yenileme moduna giriyor listbox barı kullanamıyorum
Tüm Yanıtlar
-
FileSystemWatcher bildiğim kadarıyla UNC yollarda çalışabiliyo0;r önceliğiniz o olmalı. Timer ile yaptığınızda da doğrudan listbox'ı güncellemek yerine mevcut veri ile yeni veriyi karşılaştırıp sadece ilgili satırlarda güncelleme yapabilirsiniz.
- Düzenleyen Cihan YakarMVP 4 Eylül 2020 Cuma 14:44
- Yanıt Olarak Öneren CetinBasozEditor 4 Eylül 2020 Cuma 16:00
-
FileSystemWatcher bu konuyu biraz araştırdım genelikle klasör ve dosya dinleme üzerine yanılmıyorsam . basit bir timer mantığından kastım timer belirli aralıklarla örnegin 5000 ms bir mevcut kod ile bu koddan kastım dosyaları listbox a çağıran kodu tekrarlıyor bu neden le örneğin listbox u aşağı doğru çekemiyorum dosya ismini tıklayamıyorum taki timer i pasif hale getirene kadar bu seferde paylaşılan klasöre bir dosya kaydedildiğinde ben ancak programı kapatıp açınca göre biliyorum benim maksadım anında görebilmek.
-
Cevabım değişmeyecek, ya eksik bilgi veriyorsunuz ya da fsw yi araştırmadınız. Ayrıca timer için de öneride bulundum.
- Düzenleyen Cihan YakarMVP 4 Eylül 2020 Cuma 17:36
-
öncelikle ilgin için teşekkür ederim;
zaten fsw yi çok iyi araştırdığımı söylemedim ; belki cevabı fsw dedir onu öğrenmeye çalışıyorum.
ben dosyanın ne zaman oluştuğunu silindiğini değiştirildiğini kopyalandığını vs.. görsel olarak mesaj olarak istemiyorum.
elimde bir klasör onun içinde dosyalar programda bir listbox var. ve program her açıldığında bu dosyalar listbox a listeleniyor yani basit bir listeleme sınıfı ile.
başka bir kullanıcı bu dosyalardan birini silince yada yeni bir dosya oluşturunca klasörde. kendi açık programımdaki listboxta eş zamanlı bunu görüp kayıt ve sayısını yeniden listelemesini istiyorum bunu timer yaptım olmadı çunkü Form_Load kısmına attığım için timer sürekli yeniliyor bu sebeğle listbox ta hiç bir fonksiyonu kullanamıyorum belki oluyordur ama ben bir yerini yanlış yapıyor olabilirm.
-
Cevap fsw de ise daha neyi soruyorsunuz?
Timer kullanıyorsanız yanlış yapıyorsunuz. Yapmak istediğiniz şey zamana bağlı değil, olaya bağlı. Siz inatla, hem timer kullanıp hem de thread'ın senkronize olacağı kod istiyorsunuz ki yaptıklarınız boşa gitmesin diye. Ama aklı başında kimse bu yanıtı size vermeyecek. for ile if öğrenip, gelip forum yanıt yazanlar size uyan yanıtı verir belki.e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
-
Merhaba öyle fazla kodlama bilgim vs yok fakat bir öneride bulunmak istedim
Sonuç olarak istediğiniz şey bir işlem yapıldığında diğer uygulamalarda dosyaların tekrardan listelenmesi diye düşünüyorum.
Şöyle ki uygulamada eğer bir dosya silme işlemi yapıldığında filezilla veya başka bir server 'a değişiklik yapıldığı verisini bir text dosyasına gönderseniz daha sonrasında diğer uygulamalarında o text dosyasında değişiklik aramasını sağlarsanız eğer varsa listeyi güncellemesini sağlarsanız belkide istediğiniz şeyi elde etmiş olursunuz bu işlem biraz ilginç ama hiçbir şeyden anlamadıysanız ve fazla bilginiz yoksa denemenizi öneririm
Aynısını güncelleme sistemi için kullanmıştım sonuç alarak işlem dışında her şey aynı.
-
Nerede anlaşamadığımızı anlamıyorum. fsw dosyalarda ekleme,çıkarma, silme yapıldığında size haber verecek. Timer la uğraşmanın anlamı yok. Hem de sadece değişen dosyayı bildiğiniz için tüüüm listeyi yenilemek zorunda da değilsiniz. Ve tekrar ediyorum, illa timer ile çözecekseniz de tüm kutuyu sürekli güncellemeniz mantıklı değil. ListBox'a bind ettiğiniz datasource'u sadece değişikliğe göre güncellemeniz yeterli olacaktır. 10000 tane dosya varsa ve 1 dosya eklendi ise sadece onu listeye ekleyin tekrardan doldurmayın...