InvalidOperationException - Objekt wird derzeit an anderer Stelle verwendet - rotes Kreuz

Ich habe eine C # -Desktopanwendung, in der ein von mir erstellter Thread fortlaufend ein Bild von einer Quelle abruft (es ist eigentlich eine Digitalkamera) und es auf einem Panel (panel.Image = img) in der GUI ablegt (bei dem es sich um einen anderen Thread handeln muss) Es ist das Code-Behind eines Steuerelements.

Die Anwendung funktioniert, aber auf einigen Computern wird in zufälligen Zeitintervallen der folgende Fehler angezeigt (unvorhersehbar)

************** Exception Text **************
System.InvalidOperationException: The object is currently in use elsewhere. 

Dann verwandelt sich das Feld in ein rotes Kreuz, rotes X - ich denke, dies ist das ungültige Bildsymbol, das in den Eigenschaften bearbeitet werden kann. Die Anwendung funktioniert weiterhin, das Panel wird jedoch nie aktualisiert.

Soweit ich das beurteilen kann, stammt dieser Fehler aus dem Onpaint-Ereignis des Steuerelements, bei dem ich etwas anderes auf das Bild zeichne.

Ich habe versucht, dort ein Schloss zu benutzen, aber kein Glück :(

Die Art und Weise, wie ich die Funktion aufrufe, mit der das Bild in das Bedienfeld eingefügt wird, ist folgende:

if (this.ReceivedFrame != null)
{
    Delegate[] clients = this.ReceivedFrame.GetInvocationList();
    foreach (Delegate del in clients)
    {
        try
        {
            del.DynamicInvoke(new object[] { this, 
                new StreamEventArgs(frame)} );
        }
        catch { }
    }
}

Das ist der Delegierte:

public delegate void ReceivedFrameEventHandler(object sender, StreamEventArgs e);
    public event ReceivedFrameEventHandler ReceivedFrame;

und so registriert sich die Funktion im Steuercode-Behind:

Camera.ReceivedFrame += 
    new Camera.ReceivedFrameEventHandler(camera_ReceivedFrame);

Ich habe es auch versucht

del.Method.Invoke(del.Target, new object[] { this, new StreamEventArgs(b) });

anstatt

del.DynamicInvoke(new object[] { this, new StreamEventArgs(frame) });

aber kein glück

Weiß jemand, wie ich diesen Fehler beheben oder zumindest den Fehler irgendwie abfangen und den Thread dazu bringen könnte, die Bilder wieder auf das Panel zu setzen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage