C# LanguageBackgroundWorker


Sintassi

  • 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.

Osservazioni

L'esecuzione di operazioni a esecuzione prolungata all'interno del thread dell'interfaccia utente può causare la mancata risposta dell'applicazione, visualizzando all'utente che ha smesso di funzionare. È preferibile che queste attività vengano eseguite su un thread in background. Una volta completata, l'interfaccia utente può essere aggiornata.

Apportare modifiche all'interfaccia utente durante l'operazione di BackgroundWorker richiede il richiamo delle modifiche al thread dell'interfaccia utente, in genere utilizzando il metodo Control.Invoke sul controllo che si sta aggiornando. Trascurare di farlo farà sì che il tuo programma generi un'eccezione.

In genere, BackgroundWorker viene utilizzato solo nelle applicazioni Windows Form. Nelle applicazioni WPF, le attività vengono utilizzate per scaricare il lavoro sui thread in background (eventualmente in combinazione con async / await ). Gli aggiornamenti di marshalling sul thread dell'interfaccia utente vengono in genere eseguiti automaticamente, quando la proprietà da aggiornare implementa INotifyPropertyChanged o manualmente utilizzando il Dispatcher del thread dell'interfaccia utente.

BackgroundWorker Esempi correlati