Comment puis-je signaler une chaîne (comme "à la recherche de fichiers".. De plus, j'ai une grande classe qui contient la méthode que je souhaite exécuter dans le backworker_work. Je peux l'appeler par classe_method (); Mais je suis alors incapable de signaler mon pourcentage effectué ou quoi que ce soit de la classe appelée, uniquement à partir de la méthode Backworker_Work. P>
merci! p>
4 Réponses :
Utilisez un délégué. P>
Lire Simple Multi-threading sous Windows Formulaires . p>
C'est une série en 3 parties. p>
Vous pouvez utiliser le paramètre USERTATE de Voici un exemple de MSDN: P> ReportProgress code> pour signaler ces chaînes.
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!");
}
Je suppose que la WCF a également la méthode , utilisez simplement l'USSTET pour signaler la chaîne. P> private void worker_ProgressChanged(object sender,ProgressChangedEventArgs e)
{
statusLabel.Text = e.UserState as String;
}