WTelegram nuget paketi ile telegram bir kanalını dinliyorum. sorun şu ki aynı mesaj aynı anda birden fazla defa gelebiliyor. gelen mesajlar kısa metin ve birbirinden ayırdetmenin imkanı yok. Telegram mesajlarında bir MessageID alanı var. onunla aslında mesajlar ayırdedilebiliyor ama benim için metin önemli. mesaj metni daha önce gelmişse işlemek istemiyorum.
Client_Update rutini ardarda aynı mesaj için benim fonksiyonu defalarca çağırabiliyor ve buna engel olamıyorum.
gelen son mesajları List(of...) ile kaydetmeyi ve kontrol etmeyi denedim, işe yaramadı. Bu normal çünkü List(of..) thread safe bir fonksiyon değil. Global değişkenlere son 5 mesajı kaydetmeyi denedim (OncekiMejsaj mesaj gibi bir değişkenle) yine olmadı. Thread safe olması gereken ConcurrentBag bile işe yaramadı. evet, aynı anda aynı mesaj için mesaj işleme rutinini çağırma sayısı düştü ama hala aynı mesaj için bu rutin ZAMAN ZAMAN çağırılabiliyor. Rutin içeirisine "IslemYapiliyorBekle" veya "IslemYapiliyorRutindenCik" gibi değişkenler kullanarak yaptığım düzenlemeler ise hiç işe yaramadı, bu sefer de BAZEN mesajları kaçırmaya başladım. Şu anda yukarıda saydığım bütün yöntemleri aynı anda çalıştırıyorum ama yine de arada aynı mesaj için Mesaji_Isle rutini iki defa çağırılıyor.
Bir fikri olan varmı aranızda ? Çok çaresiz kaldım.... teşekkürler.
Private Sub Client_Update(ByVal arg As IObject) Handles _Telegram_client.Update
..... kanalı okumakla ilgili bazı standart kodlar....
Dim msg As TL.Message = DirectCast(unm.message, TL.Message)
Mesaji_Isle (msg)
End Sub