Der folgende Code auf der Gruppe jedes PictureBox_right und PictureBox_left gibt mir einen Fehler, dass das Objekt an anderer Stelle verwendet wird. Ich habe mich gefragt, wie ich das beheben kann.Wie man threading Fehler behebt
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();
}
}
}
Im Folgenden sind die Codezeilen, die den Fehler verursachen:
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;
Dies ist ein weiterer Teil ist, dass Fehler, es ist im Wesentlichen das gleiche, aber tut es für das linke Bildfeld.
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;
Meine Frage ist, wie kann ich das beheben. Was ich denke ist, dass in bestimmten Fällen auf mein BildBox_rightconnectivity.Image und auf imageBox_leftconnectivity.Image immer noch von einem anderen Thread zugegriffen wird. Wo ein anderer Thread hereinkommt und dann versucht, das Bild zu setzen. Ich habe mich gefragt, wie ich das beheben könnte? Wie Sie sehen können, war mein erster Versuch, das Bild im Bitmap-Kopierobjekt zu kopieren. und verwenden Sie das dann, um die PictureBox_left und PictureBox_right festzulegen. Aber ich habe festgestellt, dass das Objekt an anderer Stelle fehlerhaft ist.