Следующий код в наборе каждого изображенияBox_right и pictureBox_left дает мне ошибку, что объект используется в другом месте. Мне было интересно, как мне это исправить.Как исправить ошибку потоковой передачи
private Bitmap pictureBox_right
{
get
{
lock (lockObject)
return (Bitmap)this.pictureBox_rightConnectivity.Image.DeepClone();
}
set
{
lock (lockObject)
{
pictureBox_rightConnectivity.Image = value.DeepClone();
}
}
}
private Bitmap pictureBox_left
{
get
{
lock (lockObject)
return (Bitmap)this.pictureBox_leftConnectivity.Image.DeepClone();
}
set
{
lock (lockObject)
{
this.pictureBox_leftConnectivity.Image = value.DeepClone();
}
}
}
Ниже приведены строки кода, которые вызывают ошибку:
Bitmap copy;
lock (ArduinoUno_v1.Properties.Resources.on_button)
{
copy = new Bitmap(ArduinoUno_v1.Properties.Resources.on_button);
pictureBox_rightConnectivity.Image = new Bitmap(ArduinoUno_v1.Properties.Resources.on_button);
//pictureBox_right = ArduinoUno_v1.Properties.Resources.on_button;
}
pictureBox_right = copy;
Это еще одна часть, что ошибки, это по сути то же самое, но делает это для коробки левого изображения.
Bitmap copy;
lock (ArduinoUno_v1.Properties.Resources.on_button)
{
copy = new Bitmap(ArduinoUno_v1.Properties.Resources.on_button);
pictureBox_leftConnectivity.Image = new Bitmap(ArduinoUno_v1.Properties.Resources.on_button); // making a copy so we don't get into access problems
// pictureBox_left = ArduinoUno_v1.Properties.Resources.on_button;
}
pictureBox_left = copy;
Мой вопрос: как это исправить. То, что я думаю, происходит в том, что в некоторых случаях мой pictureBox_rightconnectivity.Image и pictureBox_leftconnectivity.Image все еще доступен другим потоком. Где, когда приходит другой поток, а затем пытается установить это изображение. Мне было интересно, как я могу это исправить? Как вы можете видеть, моя первоначальная попытка состояла в том, чтобы попытаться скопировать изображение в объект копии Bitmap. а затем используйте это, чтобы установить pictureBox_left и pictureBox_right. Но я обнаружил, что это все еще бросает объект, который используется в другом месте.