J'ai créé une interface graphique (winforms) et ajouté un backgroundworker pour l'exécuter dans un thread séparé. L'arrière-plan doit mettre à jour 2 étiquettes en continu. Le thread d'arrière-plan devrait démarrer avec button1 click and run forever.Mise à jour continue de l'interface graphique C# à partir de l'arrière-plan
class EcuData
{
public int RPM { get; set; }
public int MAP { get; set; }
}
private void button1_Click(object sender, EventArgs e)
{
EcuData data = new EcuData
{
RPM = 0,
MAP = 0
};
BackWorker1.RunWorkerAsync(data);
}
private void BackWorker1_DoWork(object sender, DoWorkEventArgs e)
{
EcuData argumentData = e.Argument as EcuData;
int x = 0;
while (x<=10)
{
//
// Code for reading in data from hardware.
//
argumentData.RPM = x; //x is for testing only!
argumentData.MAP = x * 2; //x is for testing only!
e.Result = argumentData;
Thread.Sleep(100);
x++;
}
private void BackWorker1_RunWorkerCompleted_1(object sender, RunWorkerCompletedEventArgs e)
{
EcuData data = e.Result as EcuData;
label1.Text = data.RPM.ToString();
label2.Text = data.MAP.ToString();
}
}
Le code ci-dessus juste mis à jour l'interface graphique quand BackgroundWorker est fait avec son travail, et ce n'est pas ce que je cherche.
Non, jetez un oeil à la réponse de Blorgbeard – tanascius