Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Evento BackgroundWorker.DoWork

 

Data di pubblicazione: novembre 2016

Si verifica quando RunWorkerAsync viene chiamato.

Spazio dei nomi:   System.ComponentModel
Assembly:  System (in System.dll)

public event DoWorkEventHandler DoWork

Questo evento viene generato quando si chiama il RunWorkerAsync metodo. Questo avviene quando si avvia l'operazione che esegua l'operazione potrebbe richiedere molto tempo.

Il codice nel DoWork gestore eventi è consigliabile controllare periodicamente la CancellationPending valore della proprietà e interrompere l'operazione in questo caso true. In questo caso, è possibile impostare il Cancel flag di System.ComponentModel.DoWorkEventArgs a true, e Cancelled flag di System.ComponentModel.RunWorkerCompletedEventArgs nel RunWorkerCompleted gestore eventi verrà impostato su true.

System_CAPS_cautionAttenzione

Tenere presente che il codice nel DoWork gestore dell'evento potrebbe terminare il proprio lavoro nel caso di una richiesta di annullamento e il ciclo di polling potrebbe impedire CancellationPending viene impostata su true. In questo caso, il Cancelled flag di System.ComponentModel.RunWorkerCompletedEventArgs nel RunWorkerCompleted gestore dell'evento viene impostato su true, anche se è stata effettuata una richiesta di annullamento. Questa situazione viene denominata una race condition e costituisce un problema comune nella programmazione multithreading. Per ulteriori informazioni sulla progettazione multithreading problemi, vedere Managed Threading Best Practices.

Se l'operazione produce un risultato, è possibile assegnare il risultato di DoWorkEventArgs.Result proprietà. Saranno disponibile per il RunWorkerCompleted gestore eventi di RunWorkerCompletedEventArgs.Result proprietà.

Se l'operazione genera un'eccezione che non gestiti nel codice, il BackgroundWorker intercetta l'eccezione e la passa nel RunWorkerCompleted gestore dell'evento, in cui è esposta come la Error proprietà di System.ComponentModel.RunWorkerCompletedEventArgs. Se si esegue il debugger di Visual Studio, il debugger interromperà nel punto di DoWork gestore di eventi in cui è stata generata l'eccezione non gestita. Se si dispone di più BackgroundWorker, è consigliabile non fare riferimento ad esse direttamente, per evitare di associare il DoWork gestore eventi per un'istanza specifica di BackgroundWorker. Invece, è necessario accedere al BackgroundWorker eseguendo il cast di sender parametro nel DoWork gestore dell'evento.

È necessario evitare di modificare tutti gli oggetti dell'interfaccia utente nel DoWork gestore dell'evento. Comunicare invece con l'interfaccia utente attraverso il BackgroundWorker eventi.

Per ulteriori informazioni sulla gestione degli eventi, vedere NIB: utilizzo degli eventi.

Esempio di codice riportato di seguito viene illustrato l'utilizzo del DoWork evento per avviare un'operazione asincrona. Questo esempio di codice fa parte di un esempio più esaustivo fornito per la BackgroundWorker classe.

// This event handler is where the actual,
// potentially time-consuming work is done.
private void backgroundWorker1_DoWork(object sender, 
    DoWorkEventArgs e)
{   
    // Get the BackgroundWorker that raised this event.
    BackgroundWorker worker = sender as BackgroundWorker;

    // Assign the result of the computation
    // to the Result property of the DoWorkEventArgs
    // object. This is will be available to the 
    // RunWorkerCompleted eventhandler.
    e.Result = ComputeFibonacci((int)e.Argument, worker, e);
}

Universal Windows Platform
Disponibile da 10
.NET Framework
Disponibile da 2.0
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Torna all'inizio
Mostra: