(06-03-2019, Saat: 11:38)osiso Adlı Kullanıcıdan Alıntı: cevap bulunmayana kadar çözülmedi sayılır birde bu konu başlığındaki tüm yazılanları ve anlatılmak istenenleri tekrardan okudum da okurken şöyle bir şey hissettim saldırıııııııııınnn biri soru sormuş.
iki thread in de düzgün çalışmadığı söylenmiş ama niçin düzgün çalışmadığı açıklanmamış halbuki işlemleri kontrol ettiğimde bir sorun yok hatta dediğim gibi dün akşam evde tekrar kontrol ettiğimde sorunsuz üç thread de düzgün çalıştığını gözlemledim. neyse yapmıyorum thread mread
Merhaba,
Yanılıyorsunuz, ilk mesajda @
Tuğrul HELVACI size çok açık bir biçimde niye yanlış çalıştığını söylemiş. Sadece cevabı gözden kaçırmışsınız:
Alıntı:Thread'lerin içinden ana thread'in içindeki nesnelere erişip kullanmaya çalışmışsınız. Bu son derece hatalı bir davranış.
Daha sonraki mesajlarda da VCL nesnelerine thread içinden erişilmemesi gerektiği, VCL'in thread-safe olmadığı vurgulanmış. Yani size her türlü cevap verilmiş. Ayrıca kaynak da gösterilmiş. Belki tavsiye içeren mesajları hızlı geçiyorsunuz, ondan kaçırdınız, ama bir de sitem ettiğiniz kısımlara bakalım:
- İki thread de düzgün çalışmıyor: Çünkü ana thread'deki VCL nesnelerine erişiyorsunuz. @
Tuğrul HELVACI yazmış.
- Niçin düzgün çalışmıyor: VCL Thread safe değildir. @
edo, @
Tuğrul HELVACI 'in sitesinden alıntılamış
- Kontrol ettiğimde sorun yok: @
Tuğrul HELVACI ilk mesajında ve sonraki mesajlarında yazmış. Sorun var, ama her zaman hata vermeyebilir, çünkü kimlerin ne zaman ortak kaynağa erişeceği belli değil. Bu belirsizlikten dolayı da bazen aynı anda erişmeye çalışırlar ve patlar, bazen de erişmeye çalışmazlar ve hata vermez. Sizin yapmanız gereken de bunu koordine etmek. @
Tuğrul HELVACI Bey'in yemek masası örneği gibi.
- 3 Thread'de düzgün çalıştığını gözlemledim: Bir önceki madde ile aynı. Aslında düzgün çalışmıyor, sadece şans eseri düzgün çalışıyor. Şansınız ne kadar devam eder belli değil.
Threadlerle çalışmak biraz saç baş yoldurur, o yüzden hiç thread mhread demeden çalışmaya devam edin
Bu konuda gerek @
Tuğrul HELVACI'nın, gerekse internetteki diğer düzgün kaynakların çok yardımı olacaktır. İşe bir thread ile başlayın, örneğin ilk başta sadece dosya kopyalayın. Sonra kopyalama sırasında progress gösterin. Sonra işlemi elle iptal edin. Sonra program kapanırken otomatik iptal edin. Bir sonraki adımda işlemi geçici olarak durdurun. Bu basit gibi görünen örneği bitirdiğinizde zaten bir sürü konuyu öğrenmiş ve uygulamış olacaksınız
İyi çalışmalar