Thread sınıfını hazırladım. Herşeyi kontrol ettim. 1 thread ile çalıştırdığımda hiçbir problem yoktu. Veri alıyordu. Ancak 2 ve üzeri thread ile çalıştırdığımda program çakılıyor donup kalıyordu.
Önceleri IBX componentlerinin thread-safe olmayacağı aklıma geldi. Ancak bu tarz uygulamaların yapıldığını biliyordum. Böyle olamazdı. Gene de araştırdım.
Neyse lafı uzatmayayım. Problemin databasename'i direkt dosya olarak atadığımdan oluştuğu ortaya çıktı. Yani TIBDatabase'in DatabaseName property'sini "C:\TEST.FDB" olarak atıyordum.
Ancak bir sitede rastladığım uyarı ile hatanın bu atamadan olduğunu anladım. Thread içinde kullanıldığında "localhost:C:\TEST.FDB"


Aklınızda olsun.
Bir de thread uygulamaları için TIBConnectionBroker çok güzel bir bileşen.
Bağlantıyı ve transaction'ı kendisi oluşturup size veriyor. Ön bağlantıyı hazır etme imkanı da mevcut. Siz bana 20 connection hazır et diyorsunuz. Bağlansın bağlanmasın 20 connection hazır ediliyor. Talep halinde bu hazır connection size veriliyor. Multi-thread uygulamaları için faydalı.
Kolay gelsin.