2009-10-24 2 views

Répondre

37

Les résumés essentiellement classe BackgroundWorker le processus de création et de suivi Thread, et vous donne une API événementielle pour signaler l'avancement de l'opération (ProgressChanged) et déterminer si votre opération est terminée (RunWorkerCompleted) ...

L'une des utilisations les plus courantes est de garder une interface graphique Windows réactive pendant qu'un processus de longue durée s'exécute en arrière-plan. Donc, fondamentalement, c'est juste un wrapper pour System.Threading.Thread conçu pour rendre le thread d'arrière-plan un peu plus simple (comme son nom l'indique!)

+0

Donc, fondamentalement, c'est juste un wrapper pour System.Threading.Thread conçu pour rendre le threading un peu plus simple? – Icemanind

+1

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

+0

@MattDavis Excellent lien, il serait probablement plus significatif s'il y avait une description ou quelque chose de plus que le lien. – Randolph

18

BackgroundWorkerBackgroundWorker est réellement un wrapper pour invocation de thread asynchrone via des délégués appelle les méthodes d'appel begin/end en conséquence. Cela diffère d'un System.Threading.Thread en ce qu'il utilise le pool de threads, par opposition à la création d'un nouveau thread. La principale raison de l'utilisation de l'arrière-plan est qu'il se connecte facilement aux applications de formulaires Windows.

+4

+1 pour capturer avec précision le fait que les travailleurs d'arrière-plan utilisent le pool de threads. En outre, il est utile pour les gens de savoir que BackgroundWorker n'est pas un bon choix si vous devez appeler un objet STA Com car l'appartement ne peut pas être défini –