Я пытаюсь отправить массив в одну DoWork, но в ReportProgress нет способа получить массив, я не уверен, что мне делать, чтобы передать массив, действительно оцените, есть ли у кого-либо идея.Как ReportProgress несколько значений?
Это то, что я пытаюсь сделать:
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);
}
Тогда здесь, чтобы передать эти два значения, чтобы изменить расположение образа:
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
}
Существует альтернативный способ сделать это состоит в том, чтобы отделить их, например, передать X и передать Y, но для изменения местоположения изображения значения должны быть Точкой, содержащей 2 значения (то, что я обнаружил до сих пор, может быть неверным), поэтому я принимаю это должен быть в одном ProgressChanged,
Это то, что я пытался
pictureBox1.Location.X = new Point((int.Parse(e.ProgressPercentage.ToString())));
Однако сказал «CS1612 Невозможно изменить возвращаемое значение„Control.Location“, потому что это не переменная»
То, что я пытаюсь сделать, это чтобы изменить местоположение для X и Y, я действительно приветствую любые альтернативные решения, действительно ценю любые идеи или мысли!
Есть ли причина не устанавливать местоположение изображения сразу? – Niklas
@Niklas Вероятно, потому что вызов методов пользовательского интерфейса из фонового потока недопустим. –
похоже, что он пытается добиться некоторой анимации/перемещения изображений на экране. –