LL27: Unterschiedliches Verhalten in Designer vs. normale Preview

Hallo,

heute ist mir bei einem Bericht aufgefallen, dass es mit LL27 im Designer in der Vorschau einen Fehler wirft:

Debwin4::CSV::V1;TypeCode;Timestamp;Level;Logger;Thread;Properties;Message
▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR: Caught InvalidOperationException (Der aufrufende Thread kann nicht auf dieses Objekt zugreifen, da sich das Objekt im Besitz eines anderen Threads befindet.). 
▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:  Inner Exception:  () 
▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:  Stack Trace: 
▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:     bei System.Windows.Threading.Dispatcher.VerifyAccess()

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei System.Windows.DependencyObject.GetValue(DependencyProperty dp)

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei combit.Reporting.DataProviders.ObjectTableRow`1.AddFlattableProperty(List`1 columns, Object source, PropertyDescriptor property, String path, Int32 recursionDepth)

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei combit.Reporting.DataProviders.ObjectTableRow`1.AddFlattableProperty(List`1 columns, Object source, PropertyDescriptor property, String path, Int32 recursionDepth)

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei combit.Reporting.DataProviders.ObjectTableRow`1.InitColumns()

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei combit.Reporting.DataProviders.ObjectTableRow`1.get_Columns()

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei combit.Reporting.ElementBaseCollection.AddFromInterface(ITableRow value, String Prefix, AutoDefineElementHandler AutoDefineElements)

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei combit.Reporting.ListLabel.DefineData(IDataProvider dataSource, ITableRow row, Int32 level, String prefix, Int32 recursionLevel, DataDefinitionModes flags, String[] parentPath, ReadOnlyCollection`1 usedIdentifiersOverride)

▪;1000;19.01.2022 16:39:30.358;4;LL.NetFX;4C90;100:2=CXLL27♦101:1=6;    ERR:    bei combit.Reporting.DataProviders.DataProviderInterfaceProxyNode.DefineRow(Int32 parentRowMode, Object& parentPath)

Starte ich das gleichen binary ohne Designer, läuft die Vorschau korrekt durch.

Kennt das Thema jemand anderer auch? Gibt es vielleicht schon Lösungsansätze dazu?

MfG

Nikolaus Kern

Welche Datenquelle wird für den Designer/Druck verwendet? Mit der Information könnten wir versuchen, das Problem nachzustellen.

Es ist ein ObjectDataProvider

Und welches Objekt liegt dahinter? Das Problem tritt laut Stacktrace beim Zugriff auf das Objekt selbst auf, d.h. die eigentliche Ursache (und ein eventueller Workaround) ist dort zu suchen. Vermutlich ist es ein WPF-Objekt? Dann kann es sein, dass Sie die Eigenschaft ForceSingleThread der ListLabel-Instanz auf true setzen müssen. Der Druck im Designer findet dann im Haupthread statt. Die Eigenschaft ist vor Intellisense versteckt.

Ich habe jetzt ForceSingleThread = true gesetzt. Jetzt funktioniert die Vorschau im Designer.

Die Datenquelle enthält zwei Properties vom Typ SolidColorBrush. Diese habe ich jetzt auf [Browsable(false)] gesetzt und die Vorschau funktioniert auch mit ForceSingleThread = false.

Danke für die rasche Hilfe !

1 Like