none
Metodu Nasıl Aktif Ederim? RRS feed

  • Genel Tartışma

  • Kendi yazdığım bir kütüphanem ve uygulamam var. Kütüphaneyi uygulamama ekleyip ona özgü işlemleri yaptırıyorum. Fakat kütüphanemdeki çoğu iş için yeni bir Thread kullandığımdan dolayı, uygulamanın ana Thread'inde yapmam gereken şey kütüphanenin geri döndüreceği cevabı beklemek oluyor. Buraya kadar her şey normal gibi fakat cevabı beklemek konusunda kullandığım yöntem saçmalık. While döngüsü ile kütüphanenin cevabı yazıp yazmadığını kontrol ediyorum.

    Cevabı beklemek yerine otomatik olarak Flag'lansa? Yani kütüphane işlemini tamamladığı anda, ana uygulamadaki bir metodu çalıştırsa? Böylece dinleme vs bir şey olmadığı gibi çok daha optimize çalışır. Böyle bir yöntem veya buna yakın, bildiğiniz önereceğiniz bir yöntem var mı? Delegate yöntemine baktım fakat beceremedim sanırım o tarz bir şey kullanılacak.

    Teşekkürler

    7 Kasım 2017 Salı 17:13

Tüm Yanıtlar

  • En basit ve anlaşılması kolay yol, callback yöntemidir. Burada işlem bitince çalıştırılmak üzere bir metot referansı (delegate) alırsın. İşlem thread içinde bittiğinde bu sana verilen metodu çalıştırırsın.

    void ThreadFalanCalisanKod(parametreler.... , Action callback)
    
    {
    
    ...
    
    iş bitince:
    
    
    callback();
    
    ...
    
    }

    Çağırdığın yerde ise

    Kutuphanen.ThreadFalanCalisanKod(..., BitinceCalistirilacakMethod) // parantez yok dikkat

    Fakat bu yöntem özellikle UI thread olan durumlarda yine de sağlıklı çalışmayacaktır. Dispatcher mantığı vb. kurgulaman gerekir. Ama asıl sorun şu. Gerçekten thread kullanman gerekiyor mu? Asenkron programalama ile çözemiyor musun? Ya da .net ile TPL geliyor. TPL dururken eski usül Thread nesnesinin kullanmana gerek kalmadan multi-thread programming yapabilirsin. 


    7 Kasım 2017 Salı 18:56
  • Cevap için teşekkür ederim, aslında ben bunu Java için istemiştim fakat Google üzerinde nasıl aratacağımı bilemediğim ve C# ile Java aşağı yukarı benzer syntax'larda oldukları için buraya yazdım. Şimdi Java üzerinde bu metodolojiyi araştırıcam. Umarım bulabilirim. :)

    Teşekkürler.



    • Düzenleyen Exs123 7 Kasım 2017 Salı 20:45
    7 Kasım 2017 Salı 20:43
  • Bu C#, Java'ya çok benziyor yanılgısına pek düşmeyin derim. Evet temel oop tarafında syntax oldukça benziyor. Fakat kullanımda birebir aynı koda farklı çıktılar üretebilirler. İki dille beraber uğraşınca beyin yanar sonra.  Udemy çılgınlığında bir multithreading dersi kapmanızı tavsiye ederim :)
    8 Kasım 2017 Çarşamba 06:54
  • Aslında benim istediğim Google üzerinde nasıl aratacağımı söyleyen Keyword'ü öğrenmekti. Nitekim de Java'da "Callback" yapısı varmış. Keyword için teşekkür ederim. :)

    Evet bir ders kapmam gerekecek, önerebileceğiniz bir kurs var mı? :)

    8 Kasım 2017 Çarşamba 09:03