AvaloniaUI / Avalonia.Controls.TreeDataGrid

A combined TreeView/DataGrid for Avalonia.
MIT License
266 stars 54 forks source link

InvalidOperationException: Call from invalid thread #234

Open Flying--Dutchman opened 11 months ago

Flying--Dutchman commented 11 months ago

When invoking PropertyChanged from another thread, for a property which is beeing displayed in the grid, I get the following exception.

System.InvalidOperationException: Call from invalid thread
   at Avalonia.Threading.Dispatcher.<VerifyAccess>g__ThrowVerifyAccess|16_0()
   at Avalonia.Threading.Dispatcher.VerifyAccess()
   at Avalonia.AvaloniaObject.VerifyAccess()
   at Avalonia.AvaloniaObject.SetAndRaise[T](DirectPropertyBase`1 property, T& field, T value)
   at Avalonia.Controls.Primitives.TreeDataGridTextCell.set_Value(String value) in /_/src/Avalonia.Controls.TreeDataGrid/Primitives/TreeDataGridTextCell.cs:line 50
   at Avalonia.Controls.Primitives.TreeDataGridTextCell.OnModelPropertyChanged(Object sender, PropertyChangedEventArgs e) in /_/src/Avalonia.Controls.TreeDataGrid/Primitives/TreeDataGridTextCell.cs:line 93
   at Avalonia.Controls.Models.NotifyingBase.RaisePropertyChanged(String propertyName) in /_/src/Avalonia.Controls.TreeDataGrid/Models/NotifyingBase.cs:line 28
   at Avalonia.Controls.Models.NotifyingBase.RaiseAndSetIfChanged[T](T& field, T value, String propertyName) in /_/src/Avalonia.Controls.TreeDataGrid/Models/NotifyingBase.cs:line 19
   at Avalonia.Controls.Models.TreeDataGrid.TextCell`1.set_Value(T value) in /_/src/Avalonia.Controls.TreeDataGrid/Models/TreeDataGrid/TextCell.cs:line 59
   at Avalonia.Controls.Models.TreeDataGrid.TextCell`1.<.ctor>b__7_0(BindingValue`1 x) in /_/src/Avalonia.Controls.TreeDataGrid/Models/TreeDataGrid/TextCell.cs:line 38
   at System.Reactive.AnonymousObserver`1.OnNextCore(T value)
   at System.Reactive.ObserverBase`1.OnNext(T value)
   at Avalonia.Experimental.Data.Core.LightweightObservableBase`1.PublishNext(T value) in /_/src/Avalonia.Controls.TreeDataGrid/Experimental/Data/Core/LightweightObservableBase.cs:line 138
   at Avalonia.Experimental.Data.Core.TypedBindingExpression`2.PublishValue() in /_/src/Avalonia.Controls.TreeDataGrid/Experimental/Data/Core/TypedBindingExpression`2.cs:line 285
   at Avalonia.Experimental.Data.Core.TypedBindingExpression`2.ChainPropertyChanged(Object sender) in /_/src/Avalonia.Controls.TreeDataGrid/Experimental/Data/Core/TypedBindingExpression`2.cs:line 322
   at Avalonia.Experimental.Data.Core.TypedBindingExpression`2.ChainPropertyChanged(Object sender, PropertyChangedEventArgs e) in /_/src/Avalonia.Controls.TreeDataGrid/Experimental/Data/Core/TypedBindingExpression`2.cs:line 325
   at Avalonia.Utilities.WeakEventHandlerManager.Subscription`2.OnEvent(Object sender, T eventArgs)
....

Because that thread is invoked inside a library, I cannot manually use Dispatcher.UIThread.