ReportProgress Metodo (Int32, Object)
Comprimi il sommario
Espandi il sommario
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

Metodo BackgroundWorker.ReportProgress (Int32, Object)

 

Genera l'evento ProgressChanged.

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

public void ReportProgress(
	int percentProgress,
	object userState
)

Parametri

percentProgress

La percentuale di completamento, da 0 a 100, dell'operazione in background.

userState

L'oggetto di stato passato a RunWorkerAsync.

Exception Condition
InvalidOperationException

La proprietà WorkerReportsProgress è impostata su false.

Se è necessario che l'operazione in background segnali il proprio avanzamento, è possibile chiamare il metodo ReportProgress per generare l'evento ProgressChanged.Il valore della proprietà WorkerReportsProgress deve essere true. In caso contrario, il metodo ReportProgress genererà un oggetto InvalidOperationException.

È responsabilità dell'utente implementare in modo corretto la misurazione dell'avanzamento dell'operazione in background in base alla percentuale di attività totale completata.

Nell'esempio di codice seguente viene illustrato l'utilizzo del metodo ReportProgress per segnalare all'utente l'avanzamento di un'operazione asincrona.Questo esempio di codice fa parte di un esempio più esaustivo fornito per la classe ToolStripProgressBar.

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
	// This method will run on a thread other than the UI thread.
	// Be sure not to manipulate any Windows Forms controls created
	// on the UI thread from this method.
	backgroundWorker.ReportProgress(0, "Working...");
	Decimal lastlast = 0;
	Decimal last = 1;
	Decimal current;
	if (requestedCount >= 1)
	{ AppendNumber(0); }
	if (requestedCount >= 2)
	{ AppendNumber(1); }
	for (int i = 2; i < requestedCount; ++i)
	{
		// Calculate the number.
		checked { current = lastlast + last; }
		// Introduce some delay to simulate a more complicated calculation.
		System.Threading.Thread.Sleep(100);
		AppendNumber(current);
		backgroundWorker.ReportProgress((100 * i) / requestedCount, "Working...");
		// Get ready for the next iteration.
		lastlast = last;
		last = current;
	}


	backgroundWorker.ReportProgress(100, "Complete!");
}

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:
© 2016 Microsoft