C# WPF auf Canvas Zeichnen / Thread

Rooky420

Cadet 4th Year
Registriert
Nov. 2015
Beiträge
98
Hallo Zusammen,

ich habe eine Frage zu Threading und Zeichnen auf WPF.

also ich habe eine von System.Windows.Controls.Canvas abgeleitete Klasse. In dieser Klasse befindet sich folgende

Code:
protected override void OnRender(System.Windows.Media.DrawingContext dc)
        {
            base.OnRender(dc);
            draw(dc);
            
        }

        //Neuzeichnen wird aufgerufen bzw OnRender
        private void ReDraw()
        {
            InvalidateVisual();
            UpdateLayout();
        }

        private void Draw()
        {
            Dispatcher.Invoke((Action)(() =>
            {
                ReDraw();
            }));
        }

Die Draw() Methode wird von einem anderen Thread alle paar Millisekunden aufgerufen.
Dass soll veranlassen dass das Canvas komplett neu gezeichnet wird.
Das funktioniert alles eigendlich ganz gut und flüssig.

Das komische ist dass Jetzt auf einmal als das Projekt immer größer wurde der aufruf der Methode UpdateLayout(); eine InvalidOperationException auslößt:

"An unhandled exception of type 'System.InvalidOperationException' occurred in WindowsBase.dll

Additional information: Es kann kein 'DependencyObject' verwendet werden, das zu einem anderen Thread als das übergeordnete Freezable-Objekt gehört."

An was kann das liegen?
 
Für das Rendern in WPF wird immer der GUI-Thread verwendet.
Es scheint so als würde nun ein anderer Thread versuchen dem GUI-Thread das Zeichnen abzunehmen.
 

Ähnliche Themen

Zurück
Oben