2010-08-20 18 views

Respuesta

13

Sí, básicamente es como un hilo, pero con una funcionalidad extra (eventos para que le notifique de progreso y cuando termina) .

Debe usarlo cada vez que necesite ejecutar algo que tarde un tiempo (por ejemplo, un cálculo, lectura/escritura de archivo o base de datos, solicitudes web, etc.) y no desea que la GUI no responda mientras está sucediendo:

La clase BackgroundWorker le permite ejecutar una operación en un subproceso dedicado específico. Las operaciones que consumen mucho tiempo, como las descargas y las transacciones de bases de datos, pueden hacer que su interfaz de usuario (UI) parezca que ha dejado de responder mientras se están ejecutando. Cuando desea una interfaz de usuario receptiva y se enfrenta a largas demoras asociadas con tales operaciones, la clase BackgroundWorker proporciona una solución conveniente.

Leer How to: Run an Operation in the Background para una introducción.

+0

gracias señor (10x) .. :) – yonan2236

4

Un ejemplo sencillo:

static void Main(string[] args) 
{ 
    BackgroundWorker worker = new BackgroundWorker(); 
    //DoWork is a delegate, where you can add tasks 
    worker.DoWork += (sender, e) => 
     { 
      //blabla 
     }; 
    worker.DoWork += (sender, e) => 
     { 
      //blabla 
     }; 
    worker.RunWorkerCompleted += (sender, e) => 
     { 
      var IfYouWantTheResult = e.Result; 
      //maybe notify others here 
     }; 
    worker.RunWorkerAsync(); 
    //you can cancel the worker/report its progress by its methods. 
} 

Para más detalles, consultar here

1

El trabajador en segundo plano es básicamente un hilo con la adición de que devolverá la llamada cuando se complete, y que la devolución de llamada se realizará en el contexto del U.I. hilo para que pueda actualizar el U.I. al finalizar

Si necesita esa devolución de llamada una vez completada en el contexto de la U.I. hilo - úsalo. De lo contrario, solo deberías usar un hilo común.

0

aquí hay un código de muestra de una aplicación que muestra una barra de progreso mientras se descarga algo. trabajador using fondo

http://devtoolshed.com/content/c-download-file-progress-bar

y aquí hay un tutorial rápido sobre el trabajador de fondo

http://www.dotnetperls.com/backgroundworker

le sugiero que utilizarlo cuando se tiene una operación que consume tiempo (descarga de un archivo, etc.) y quiero que la UI esté activa. es una característica útil si desea mostrar el progreso en la interfaz, como mostrar el porcentaje en una etiqueta, o si desea usar una barra de progreso.

lo uso especialmente con el control de la barra de progreso.

Cuestiones relacionadas