J'essaye d'envoyer un tableau dans un seul DoWork, mais dans ReportProgress, il n'y a aucun moyen de recevoir un tableau, je ne suis pas sûr de savoir ce que je devrais faire pour passer un tableau, vraiment apprécier si quelqu'un en a idée.Comment faire un rapportProgress multiples valeurs?
C'est ce que je voulais faire:
public void backgroundWorkerXY_DoWork(object sender, DoWorkEventArgs e)
{
do
{
X = -(RSSI_PI1_ST1);
Y = -(RSSI_PI1_ST1) + 5;
backgroundWorkerX.ReportProgress(X,Y); // pass X and Y
Thread.Sleep(50);
} while (true);
}
Alors ici pour passer ces deux valeurs pour changer l'emplacement d'une image:
public void backgroundWorkerXY_ProgressChanged(object sender, object sender1, ProgressChangedEventArgs e)
{
pictureBox1.Location = new Point((int.Parse(e.ProgressPercentage.ToString())), (int.Parse(e.ProgressPercentage.ToString())));
// Not sure how to let a single ProgressChanged to send two values here
}
Il y a une autre façon de le faire est de les séparer, par exemple, passer X, et passer Y, mais pour changer un emplacement d'image, les valeurs doivent être un Point contient 2 valeurs (ce que j'ai découvert jusqu'à présent, peut ne pas être correct), donc je suppose doit être dans un seul ProgressChanged,
C'est ce que j'ai aussi essayé
pictureBox1.Location.X = new Point((int.Parse(e.ProgressPercentage.ToString())));
Cependant, il a dit « CS1612 Impossible de modifier la valeur de retour de « Control.Location » parce qu'il est pas une variable »
Ce que je suis en train de faire est pour changer l'emplacement pour X et Y, je suis vraiment la bienvenue à toutes les solutions alternatives, apprécie vraiment toutes les idées ou pensées!
Y at-il une raison pour ne pas définir l'emplacement de l'image tout de suite? – Niklas
@Niklas Probablement parce que l'appel de méthodes UI à partir d'un thread d'arrière-plan n'est pas autorisé. –
ressemble à il essaie de réaliser une animation/déplacer les images à l'écran. –