Forum
Merhaba
El terminalinde her saniyede bir bağlantı olup olmadığını nasıl kontrol edebilirim? Yani c#'ta yazılan bir wcf servis var. Bu servisle bağlantı yapamadığı zaman veya bağlantı koptuğu zaman ekranda anlık gösterebilimesi için nasıl kontrol edebilirim ?
Teşekkürler
Servise basit bir metot ekleyin. Talep geldiğinde true değeri dönsün örneğin. Bu servisi timer aracılığı ile istediğiniz aralıkta sorgulayın. Cevap gelmemesi veya timeout tarafını catch bloğunda yönetebilirsiniz. İyi çalışmalar.
Ben zaten bunu yapıyorum da cevap gelmemesi durumu 4 saniye veya bağlantı durumuna göre daha fazla olabiliyor. Benim istediğim her saniye veya 2 saniyede bir olması
Özellikle mobil cihazlarda, kablosuz ağlarda belirttiğiniz beklemeler yaşanabilir. Gerek ortamdaki yansımalar ve gerekse AP noktasına olan mesafeniz, aradaki engeller buna sebep olabilir. Sisteminizi bu şekilde çalıştırdığınızda gereksiz bağlantı yok hataları alma ihtimaliniz mevcut. Tam olarak neden böyle bir şeye ihtiyacınız olduğunu belirtirseniz farklı bir çözüm üzerinde konuşabiliriz. Ancak yine de kısa süreli de olsa bağlantı kopmalarını denetlemek isterseniz ping paketlerini izleyebilirsiniz. Cihaz sürekli olarak belirttiğiniz sunucuya ping gönderir, cevap alamaz ise bağlantı hatası tespit edebilirsiniz.
https://www.c-sharpcorner.com/UploadFile/167ad2/how-to-use-ping-in-C-Sharp/
El terminali için geliştirdiğim bir sayım veya sipariş alma gibi bir yazılım var. Veri tabanına veriyi göndermek istediğim zaman eğer bağlantı yok ise ( bunu bir değişkende tutup bakacam. Arka planda sürekli çalışan bir thread yazmıştım ama programda donmaya neden oldu el terminalinde. laptopda çalıştıdığım zaman sıkıntı olmuyor. ) kaydedilecek olan verileri başka bir yerde tutcam. Bağlantı olma durumunda göndermek istiyorum. Fakat bağlantı olmadığı zaman veya bağlantı koptuğu zaman veriyi göndermek istersem belli bir süre bekliyor. Bazen çok uzun sürüyor bu süre. Bende eğer bağlantı olmadığı zaman beklememek için başka yöntemler geliştirerek yazacam. Fakat bağlantı durumunu kontrol etmeyle ilgili bir thread yazdım. Bu threadde bazen 4 veya 7 saniyede bir cevap veriyordu. Bu durumu aşmak istiyorum.
sqlconnection nesnesinin open() metodu bağlantıyı açmaya çalışırken bir problemle karşılaşması durumunda sqlexception üretir. Eğer direkt Sql veritabanına kayıt atıyorsanız (arada bir web servis vb. yapı yoksa) bu nesneyi kullanabilirsiniz. Donma olarak tanımladığınız hadise, aslında sistemin cevap vermesini beklemesi ve cevap alamadığına karar verene kadar geçen sürede yaşanan durumdan kaynaklanmaktadır. Bu süreyi kısaltmak için SqlConnection.ConnectionTimeout inceleyebilirsiniz. Timeout değerini küçük bir değer atayarak yazılımın bağlantının durumu ile ilgili olarak daha hızlı karar vermesini sağlayabilirsiniz.