• 05-08-2013, 18:41:08
    #1
    Merhaba,

    Bir projemde programı kapatırken kullandığım thread'leri kapatmadan programı kapatıyorum doğal olarak devam eden thread'lerim hata veriyor. Bunu thread'in IsBackground property'si ile engelleyebiliyorum ama Thread'lerde ki IsBackground property'sini kullanmanın veya kullanmamanın ne gibi sakıncaları var o kafamı kurcalıyor biraz ?

    Biraz araştırdım şu şekilde bir yazı buldum ;

    Alıntı
    "Bunun sebebi arka planda çalışmak üzere ayarlanmış iş parçacıklarının ana iş parçacığı sonlandığında CLR tarafından otomatik olarak durduruluyor olmasıdır. Benim tavsiyem çok önemli olmayan iş parçacıklarınızı arka zeminde çalışacak şekilde ayarlamanız ve bu sayede de programdan çıkışta onların durup durmadıklarını kontrol etmekten kurtulmanızdır. Zira yeni programcılar genelde bu nokta da çok zorlanmaktadır ve programlarını sonlandırmak istediklerinde başarısız olmaktadırlar. İş parçacıklarınzın durdurulması konusunu hem bu yazımda hemde ilerleyen yazılarımda daha detaylı olarak işleyeceğimden şu an için fazla detaya girmiyorum."
    Kısaca önemli olan thread'larınız IsBackground özelliğini kullanmayın demiş.

    Sizce IsBackground kullanmak mantıklı mı ?
  • 05-08-2013, 18:53:24
    #2
    threadpool kullanabilirsin. benim izlediğim yöntem böyle.. yaratılan threadleri de takip etmek zorunda kalmazsın o zaman.. bunun haricinde .net tarafında pek öne çıkmayan mutex, semaphore, ipc gibi kavramlarıda araştırabilirsin
  • 05-08-2013, 19:18:40
    #3
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Thread daha iyi ki içerisinde birden fazla bağımsız instance yaratıp iş yaptırabiliyorsun. IsBackground sadece arkaplanda çalışarak ui'nin donmasını engelliyor. Yoksa clr sonlandığında hata döndürebilir ve hatayı yakalayamayabilirsin.
    Hatta bana sorarsan direk Task kullan.
  • 05-08-2013, 23:36:11
    #4
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    threadpool kullanabilirsin. benim izlediğim yöntem böyle.. yaratılan threadleri de takip etmek zorunda kalmazsın o zaman.. bunun haricinde .net tarafında pek öne çıkmayan mutex, semaphore, ipc gibi kavramlarıda araştırabilirsin
    Söylediğiniz kavramları araştırmaya başladım Threadpool dahil.

    Ama Thread kullanacak olsak hangisi daha mantıklı olur. Hiçbirşey yapmadan programı kapatmak hata vermesini engellemek mi yoksa IsBackground parametresine true verip hata vermesini engellemek mi ?

    rob33n adlı üyeden alıntı: mesajı görüntüle
    Thread daha iyi ki içerisinde birden fazla bağımsız instance yaratıp iş yaptırabiliyorsun. Backgroundworker sadece arkaplanda çalışarak ui'nin donmasını engelliyor. Yoksa clr sonlandığında hata döndürebilir ve hatayı yakalayamayabilirsin.
    Hatta bana sorarsan direk Task kullan.
    Yeni bir thread oluşturuyorum ve onun property'sin de bulunan IsBackground özelliğine true değerini veriyorum thread o zaman Backgroundworker olarak mı çalışıyor
  • 06-08-2013, 00:23:52
    #5
    HHHMMM adlı üyeden alıntı: mesajı görüntüle
    Yeni bir thread oluşturuyorum ve onun property'sin de bulunan IsBackground özelliğine true değerini veriyorum thread o zaman Backgroundworker olarak mı çalışıyor
    Backgroundworker olmayacak o, ben gaza gelip yanlış yazmışım
    IsBackground olarak değiştirdim.
    Task kullanmanı tavsiye ederim. Bunların hepsi aslında birer thread zaten.
    Task ile bir işlem belirliyorsun ve task sonlanınca sadece bitiyor. Bittiği zaman neler yapacağını ..vs bile belirleyebiliyorsun. Aynı işlem Threadpool içinde geçerli. Bana göre Task kullanmak daha kolay. Belki ertan içinde threadpool kullanmak daha kolaydır. İkisininde kullanımına bakıp kararı sen ver.
  • 06-08-2013, 09:42:19
    #6
    rob33n adlı üyeden alıntı: mesajı görüntüle
    Backgroundworker olmayacak o, ben gaza gelip yanlış yazmışım
    IsBackground olarak değiştirdim.
    Task kullanmanı tavsiye ederim. Bunların hepsi aslında birer thread zaten.
    Task ile bir işlem belirliyorsun ve task sonlanınca sadece bitiyor. Bittiği zaman neler yapacağını ..vs bile belirleyebiliyorsun. Aynı işlem Threadpool içinde geçerli. Bana göre Task kullanmak daha kolay. Belki ertan içinde threadpool kullanmak daha kolaydır. İkisininde kullanımına bakıp kararı sen ver.
    Bende bir ara acayip şaşırdım Backgroundworker duyunca

    Task ve Threadpool denicem bakalım benim de hangisi kolayıma gelirse onu kullanırım

    Bilgi için teşekkürler..