Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

[70-526] Errata corrige "Special" #10

Ormai sembra una barzelletta, ma per fortuna gli errori sono quasi finiti...

Una domanda del quiz di autovalutazione dell'esame 70-526 spiega che si vuole visualizzare una ProgressBar con cui informare l'utente sull'avanzamento di una certa operazione in backgruond. La domanda chiede qual è il modo migliore per realizzare questa funzionalità. La risposta segnalata come valida dice di creare all'interno di un Form un Timer che scatta ogni secondo; nel gestore dell'evento Tick si deve richiamare il metodo BackgruondWorker.ProgressChanged ed esaminare il valore di ritorno per aggiornare la barra.

In questo risposta ci sono almeno due errori. Il primo è che utilizzare un timer per verificare l'avanzamento dell'operazione non è sicuramente un metodo consigliabile, dal momento che sono preferibili le strade basate su Callback ed eventi. Il secondo, e più grave, riguarda la parte della domanda in cui si parla di BackgruondWorker.ProgressChanged: quest'ultimo, infatti, non è un metodo, bensì un evento che viene generato dall'oggetto BackgroundWorker quando al suo interno si invoca il metodo ReportProgress. Di conseguenza, ProgressChanged non può essere richiamato da un form, né tantomeno ha un valore di ritorno.

La soluzione corretta (e migliore) consiste nel registrasi sull'evento BackgroundWorker.ProgressChanged e, nel gestore relativo, utilizzare la proprietà ProgressChangedEventArgs.ProgressPercentage per conoscere l'avanzamento dell'operazione.

Technorati Tag: , ,

Print | posted on mercoledì 19 settembre 2007 17:58 | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET