Je veux ajouter du temps écoulé (minutes) à une interface graphique et faites autre chose en parallèle.
Tout ce que j'essaie ne réussit pas, il colle dans ma graphique. I Ajouter un exemple: P>
namespace Backgrondworker { public partial class Form1 : Form { int aa = 0; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { progressBar1.Value = 0; progressBar1.Maximum = 10; backgroundWorker1.RunWorkerAsync(); } private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { for(int i =1;i<=10;i++) { Thread.Sleep(1000); backgroundWorker1.ReportProgress(0); } } private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar1.Value += 1; } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { MessageBox.Show("completed"); } } }
3 Réponses :
Vous devriez faire ce qui suit p>
vous mettez changez ceci à: p> Division par 0 code> dans
ReportProgress code>:
10 code> vous donne la fraction du travail effectué (vous comptez
10 code> fois dans la boucle) et multipliez par
100 code> est pour obtenir le pourcentage. p> p>
J'explique: Formulaire de classe partielle publique1: forme {
public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Task.Run(() => { for (int i = 1; i <= 10; i++) { Thread.Sleep(1000); label2.Text = i.ToString(); } }); Task.Run(() => { for (int i = 1; i <= 10; i++) { Thread.Sleep(1000); label3.Text = i.ToString(); } }); } }
Normalement, la progression est signalée via le paramètre de
ReportProgress code>. Êtes-vous sûr que les événements Hanlders sont câblés? Afficher le contenu de
initializecomonent () code> méthode.
Quoi d'autre avez-vous besoin de faire en parallèle? Seul le thread principal peut modifier les propriétés des objets sur le formulaire, de sorte que vous préférez votre travail parallèle dans un fil ou une tâche et mettez à jour la progression à l'aide d'un contrôle de minuterie.
Qu'est-ce que "colle dans ma graphique" i> signifie? Je comprends cela comme "rien ne se passe", mais je pourrais avoir tort.