Soru & Cevap

Backgroundworker ile thread arasındaki fark ...

09.12.2013 - 08:48

Elimde textboxchanged eventinde bir yığın iş yapmak zorunda olan bir proje var. Haliyle kullanıcı her harf değeri girdiğinde bu işleri program tekrar yapmaya çalışıyor ki bu da textbox ı kilitliyor.Kullanıcının art arda harf girmesini yavaşlatıyor. Bu sorunu yenmek için backgroundworker ile işleri aynı anda yapan async fonksiyonlar oluşturdum ancak kayda değer bir hızlanma göremedim. Acaba thread yapsam aynı şey mi olur.

83 Görüntülenme

2 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-472-1375079047.jpg
mehmet.altiparmak
10.12.2013 - 11:11

Ömer Merhaba Tekrar,

Örnek olması açısından ufak bir uygulama geliştirdim. Textbox'ın Text özelliği her değiştiğinde UserGrid'e gidip kullanıcı ismine göre arama yapan bir uygulama. Kullanıcıyı her hangi bir şekilde yavaşlatmıyor. 

https://dl.dropboxusercontent.com/u/218691470/UserGridSample.rar 

Senin yazdığın async fonksiyonu paylaşabilirsen problemin ne olduğunu çözebiliriz, Thread açmak önerilen bir uygulama olmadığı için o konuda bilgi vermek istemiyorum.

Her uygulamanın Thread açtığını düşünürsek işlem gücü yüksek olmayan mobil cihazlarda kullanıcılara ciddi performans sıkıntısı yaşatabiliriz. O yüzden önerilen yöntemleri tercih etmekte fayda var. Hali hazırda tüm uygulamaların kullanabileceği bir ThreadPool sınıfı var. Task.Run fonksiyonu arka planda bu ThreadPool'u kullanıyor sen de ek thread açmak yerine bu fonksiyonu kullanmalısın eğer CPU bound bir işlem yapıyorsan. IO bound işlemlerde de SDK'nın sunduğu async ile biten fonksiyonları kullanmalısın. 

 

picture-472-1375079047.jpg
mehmet.altiparmak
09.12.2013 - 09:37

Merhaba Ömer,

Yazdığın async fonksiyonu paylaşabilir misin?