C # backgroundWorker rapporte une chaîne?

Comment signaler une chaîne (comme “recherche dans un fichier…”, “Sélection trouvée…”) Dans mon fichier Windows.form à partir d’un outil backgroundWorker ainsi que d’un pourcentage. De plus, j’ai une grande classe qui contient la méthode que je veux exécuter dans backgroundWorker_Work. Je peux l’appeler par Class_method (); mais je suis alors incapable de signaler mon pourcentage de réalisation ou quoi que ce soit de la classe appelée, uniquement de la méthode backgroundWorker_Work.

Merci!

Je suppose que WCF a également la méthode

public void ReportProgress(int percentProgress, Object userState); 

Il suffit donc d’utiliser userState pour signaler la chaîne.

 private void worker_DoWork(object sender, DoWorkEventArgs e) { //report some progress e.ReportProgress(0,"Initiating countdown"); // initate the countdown. } 

Et vous obtiendrez cette chaîne “Déclenchement du compte à rebours” dans l’événement ProgressChanged

 private void worker_ProgressChanged(object sender,ProgressChangedEventArgs e) { statusLabel.Text = e.UserState as Ssortingng; } 

Vous pouvez utiliser le paramètre userState de la méthode ReportProgress pour signaler ces chaînes.

Voici un exemple de MSDN:

 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!"); } 

Lire le multi-threading simple dans Windows Forms .

C’est une série en 3 parties.

utiliser un délégué.