Qual è la differenza tra la creazione di un thead utilizzando BackgroundWorker e la creazione di un thread utilizzando System.Threading.Thread?Differenza tra BackgroundWorker e System.Threading.Thread
risposta
La classe BackgroundWorker astrae fondamentalmente il processo Thread creazione e il monitoraggio, e ti dà un'API event-driven per segnalare il progresso dell'operazione (ProgressChanged) e determinare quando l'operazione è terminata (RunWorkerCompleted) ...
Uno degli usi più comuni è mantenere una GUI di Windows reattiva mentre un processo a esecuzione prolungata viene eseguito in background. Quindi, fondamentalmente, è solo un wrapper per System.Threading.Thread progettato per rendere il threading di sfondo un po 'più semplice (come suggerisce il nome!)
10 è in realtà un wrapper per l'invocazione di thread asincrona tramite delegati - utilizzando il reflector si può vederlo chiama di conseguenza i metodi begin/end invoke. Questo differisce da un System.Threading.Thread
in quanto utilizza il threadpool anziché avviare un nuovo thread.
Il motivo principale per l'utilizzo di background worker è che si integra perfettamente con le applicazioni di Windows Form.
+1 per catturare con precisione il fatto che i dipendenti in background utilizzano il pool di thread. Inoltre, è utile per le persone che sanno che BackgroundWorker non è una buona scelta se è necessario chiamare un oggetto COM STA poiché l'appartamento non può essere impostato –
- 1. Thread.Start() vs BackgroundWorker
- 2. BackgroundWorker e ClipBoard
- 3. La differenza tra $ * e $ @
- 4. Differenza tra $ # e $ {# @}
- 5. Differenza tra. e #
- 6. MySQL: Differenza tra ",", "e"
- 7. Differenza tra "o" e "||"
- 8. Differenza tra unwrapObservable e()
- 9. Differenza tra oggetto e *?
- 10. Differenza tra "**/* /" e "** /"?
- 11. Differenza tra jquery e $
- 12. CMake: differenza tra $ {} e "$ {}"
- 13. Differenza tra ". +" E ". +?"
- 14. VBA: Differenza tra & e +
- 15. Differenza tra numpy.logical_and e &
- 16. Differenza tra | = e^= css
- 17. Differenza tra `% in%` e `` ==
- 18. Problema WPF/BackgroundWorker e BitmapSource
- 19. Backgroundworker abortire
- 20. Differenza tra Dizionario e Hashtable
- 21. Differenza tra SCM e SVN
- 22. differenza tra RDLC e SSRS
- 23. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 24. Differenza tra "\ n" e Environment.NewLine
- 25. Differenza tra QSharedPointer e QSharedDataPointer?
- 26. Differenza tra toFixed() e toPrecision()?
- 27. Differenza tra strncpy e memcpy?
- 28. Differenza tra crittografia e hashing
- 29. Differenza tra Assembly.CreateInstance e Activator.CreateInstance?
- 30. Differenza tra coredata e sqlite
Quindi, fondamentalmente, è solo un wrapper per System.Threading.Thread progettato per rendere il threading un po 'più semplice? – Icemanind
http://stackoverflow.com/questions/1506838/backgroundworker-vs-background-thread/1507337#1507337 –
@MattDavis Ottimo collegamento, sarebbe probabilmente più significativo se esistesse una descrizione o qualcosa di più di SOLO il collegamento. – Randolph