C# LanguageTrabajador de fondo


Sintaxis

  • bgWorker.CancellationPending //returns whether the bgWorker was cancelled during its operation

  • bgWorker.IsBusy //returns true if the bgWorker is in the middle of an operation

  • bgWorker.ReportProgress(int x) //Reports a change in progress. Raises the "ProgressChanged" event

  • bgWorker.RunWorkerAsync() //Starts the BackgroundWorker by raising the "DoWork" event

  • bgWorker.CancelAsync() //instructs the BackgroundWorker to stop after the completion of a task.

Observaciones

La realización de operaciones de larga ejecución dentro del subproceso de la interfaz de usuario puede hacer que su aplicación deje de responder, y le parece al usuario que ha dejado de funcionar. Es preferible que estas tareas se ejecuten en un subproceso en segundo plano. Una vez completado, la interfaz de usuario se puede actualizar.

Realizar cambios en la interfaz de usuario durante la operación de BackgroundWorker requiere invocar los cambios en el subproceso de la interfaz de usuario, generalmente mediante el método Control.Invoke en el control que está actualizando. Si no lo hace, su programa generará una excepción.

El BackgroundWorker normalmente solo se usa en aplicaciones de Windows Forms. En las aplicaciones WPF, las tareas se utilizan para descargar trabajos en subprocesos en segundo plano (posiblemente en combinación con async / await ). La actualización de las actualizaciones en el subproceso de la interfaz de usuario se realiza de forma automática, cuando la propiedad que se está actualizando implementa INotifyPropertyChanged , o manualmente mediante el Dispatcher del subproceso de la interfaz de usuario.

Trabajador de fondo Ejemplos relacionados