Escribo un programa de descarga en C# y me detengo en el siguiente problema: ¿qué tipo de método debo usar para paralelizar mis descargas y actualizar mi GUI?C# Downloader: ¿debería usar Threads, BackgroundWorker o ThreadPool?
En mi primer intento, utilicé 4 subprocesos y al finalizar cada uno de ellos comencé otro: el problema principal era que mi CPU funciona al 100% en cada nuevo inicio de subproceso.
Buscando en Google, encontré la existencia de BackgroundWorker y ThreadPool: afirmando que quiero actualizar mi GUI con el progreso de cada enlace que estoy descargando, ¿cuál es la mejor solución?
1) Creando 4 BackgroundWorker diferentes, adjuntando a cada evento ProgressChanged un Delegado a una función en mi GUI para actualizar el progreso?
2) ¿Utiliza ThreadPool y establece el número máximo y mínimo de hilos en el mismo valor?
Si elijo # 2, cuando no hay más hilos en la cola, ¿detiene los 4 hilos de trabajo? ¿Los suspende? Como tengo que descargar diferentes listas de enlaces (20 enlaces a cada uno de ellos) y pasar de uno a otro cuando se completa, ¿el ThreadPool inicia y detiene los hilos entre cada lista?
Si deseo cambiar el número de hilos de trabajo en vivo y decido usar ThreadPool, cambiando de 10 hilos a 6, ¿lanza y corta 4 hilos aleatorios?
Esta es la única parte que me está dando dolores de cabeza. Agradezco a cada uno de ustedes por adelantado sus respuestas.
¿Por qué no utiliza hilos del Threadpool? http://msdn.microsoft.com/en-us/library/3dasc8as% 28v = vs.80% 29.aspx # Y23 – Stormenet