我正在尝试Shape
在画布上的背景线程中创建包含 5000 个对象的绘图。
我使用异步等待模式:
async void CreateDrawingAsync()
{
await Task.Run(() => CreateDrawing()).ConfigureAwait(false);
}
void CreateDrawing()
{
DrawObjects = new ObservableCollectionEx<DrawObject>();
// or: DrawObjects.Clear();
RaisePropertyChanged("DrawObjects");
// etc ... etc ...
}
ObservableCollectionEx
意味着我使用扩展ObservableCollection
通过 Dispatcher 将对象添加到集合中。
当我从CreateDrawingAsync
Window 的 Loaded 事件(在 ctor 中Data
)开始时,UI 没有响应。
使用 DispatcherPriority.Background 项目在 UI 中被一一添加,但在这种情况下,UI 也没有响应。
Loaded += (object sender, RoutedEventArgs e) =>
{
DataContext = new Data(2000, 1000, 1000);
};
1) 我希望后台线程可以解决无响应的 UI 问题,我忽略了什么?
2)为什么RaisePropertyChanged("DrawObjects")
(见上面的代码)没有效果?我本来希望由于属性更改,绘图会被清除。