InvalidOperationException - Objekt wird derzeit anderweitig verwendet - rotes Kreuz

Ich habe ein C# - desktop-Applikation, in der ein thread, erstelle ich ständig bekommt ein Bild von einer Quelle(es ist eine digitale Kamera tatsächlich) und legt es auf ein panel(Bedienfeld.Image = img) in der GUI(die muss einem anderen thread, wie es der code-behind einer Kontrolle.

Funktioniert die Anwendung aber auf einigen Rechnern bekomme ich folgende Fehlermeldung in zufälligen Zeitintervallen(unberechenbar)

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

Dann das panel verwandelt sich in ein rotes Kreuz, rot-X - ich denke, das ist die ungültige Bild-icon, das verändert die Eigenschaften. Die Anwendung funktioniert, aber die Platte wird nie aktualisiert.

Was ich sagen kann, dieser Fehler kommt von der Kontrolle der onpaint-event, wo ziehe ich etwas anderes auf dem Bild.

Versuchte ich mit einem sperren gibt es aber kein Glück 🙁

Die Art, wie ich die Funktion aufrufen, die stellt das Bild auf dem panel ist wie folgt:

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

dies ist die Stellvertretung:

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

und dies ist, wie die Funktion in der control-code-behind-Register:

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

Ich habe auch versucht

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

statt

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

aber kein Glück

Weiß jemand, wie könnte ich diesen Fehler beheben oder zumindest fangen die Fehler irgendwie und machen den thread setzen die Bilder auf dem panel wieder?

InformationsquelleAutor der Frage | 2009-06-29

Schreibe einen Kommentar