2009-10-24 24 views

cevap

37

BackgroundWorker sınıf temelde ... Thread oluşturma ve izleme sürecini soyutlar ve size operasyon (ProgressChanged) ilerlemesini rapor ve işlem tamamlandığında (RunWorkerCompleted) belirlemek üzere olay kaynaklı API verir

Bunun en yaygın kullanımlarından biri, uzun süren bir işlem arka planda yürütülürken bir Windows GUI yanıtını korumaktır. Temel olarak, sadece bir sarmalayıcı System.Threading.Thread için biraz daha basit (adından da anlaşılacağı gibi) yapmak için tasarlanmış bir addır (adından da anlaşılacağı gibi!)

+0

Temel olarak, System.Threading.Thread için sadece bir sarmalayıcı iş parçacığını biraz daha basit hale getirmek için tasarlandı mı? – Icemanind

+1

http://stackoverflow.com/questions/1506838/backgroundworker-vs-background-thread/1507337#1507337 –

+0

@MattDavis Harika bağlantı, bağlantıya SADECE bir açıklama veya başka bir şey olsaydı daha anlamlı olurdu. – Randolph

18

BackgroundWorker aslında temsilcilerle eşzamansız iş parçacığı için bir sarmalayıcıdır - yansıtıcıyı kullanarak bir tane görebilirsiniz Başlama/sonlandırma yöntemlerini buna göre çağırır. Bu, System.Threading.Thread'dan, yepyeni bir iş parçacığı başlatmanın aksine iş parçacığı kullandığı için farklıdır.

Arka plan işçisinin kullanılmasının temel nedeni, windows form uygulamalarıyla güzel bir şekilde tıkanmasıdır.

+4

+1. Buna ek olarak, bir STA Com nesnesini, daire ayarlanamayacağı için çağırmanız gerekiyorsa, BackgroundWorker'ın iyi bir seçim olmadığını bilen kişiler için yararlıdır. –