Una domanda del Trainig Kit dell'esame 70-526 chiede cosa succede quando si invoca il metodo BackgroundWorker.CancelAsync. La risposta segnalata come corretta è quella secondo cui viene generato l'evento RunWorkerCompleted. In realtà non è così: il metodo CancelAsync imposta la proprietà CancellationPending del BackgroundWorker su true. Tale proprietà deve essere verificata nel gestore dell'evento DoWork; nel caso in cui valga true, si devono eseguire i passaggi necessari all'interruzione del task, quindi si vede impostare la proprietà DoWorkEventArgs.Cancel su true: solo a questo punto viene generato l'evento RunWorkerCompleted.
Technorati tags:
Certification,
.NET