Ich versuche, ein Array in einem einzigen DoWork zu senden, aber in ReportProgress, gibt es keine Möglichkeit, ein Array zu erhalten, ich bin mir nicht sicher, was ich tun soll, um ein Array übergeben zu können, wirklich zu schätzen, wenn jemand hat Idee.Wie ReportProgress mehrere Werte?
Das ist, was ich versuche zu tun: hier
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);
}
Dann diese beiden Werte zu übergeben Sie die Stellen eines Bildes zu ändern:
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
}
eine alternative Art und Weise ist, es zu tun ist es, sie zu trennen, zum Beispiel, übergeben X, und übergeben Sie Y, aber um eine Position des Bildes zu ändern, müssen die Werte ein Punkt enthält 2 Werte (was ich bis jetzt entdeckt, kann nicht korrekt sein), also nehme ich an muss in einem einzigen ProgressChanged sein,
Das habe ich auch versucht,
pictureBox1.Location.X = new Point((int.Parse(e.ProgressPercentage.ToString())));
jedoch gesagt „CS1612 kann den Rückgabewert von‚Control.Location‘nicht geändert werden, da es keine Variable ist“
Was ich zu tun versuchen, ist Um den Ort für X und Y zu ändern, bin ich herzlich willkommen auf alternative Lösungen, wirklich schätzen alle Ideen oder Gedanken!
Gibt es einen Grund, den Speicherort des Bildes nicht sofort festzulegen? – Niklas
@ Niklas Wahrscheinlich, weil das Aufrufen von UI-Methoden aus einem Hintergrundthread nicht zulässig ist. –
sieht aus wie er versucht, etwas Animation zu erreichen/die Bilder auf dem Bildschirm zu bewegen. –