Мне нужно сделать много Shape (около 1/2 сотни тысяч) в качестве [Canvas] [2] детей. Я делаю это в своем приложении WPF, разделяя работу на две части: во-первых, я создаю фигуры, задавая свойства каждого из них (например, Margin, Fill, Width и т.д.) После добавления фигур в качестве Canvas children.
MyCanvas.Children.Add(MyShape)
Теперь я хочу улучшить производительность второй части, потому что когда я рисую фигуры, мое приложение блокируется в течение длительного периода времени. Поэтому я попытался использовать Dispatcher и его метод [BeginInvoke] [4] с различными [приоритетами] [5]: только если я использую приоритет фона, основной приложение не блокируется, в противном случае приложение остается заблокированным, а "изображение" не отображается до тех пор, пока все фигуры не будут добавлены в мой холст, но если я использую приоритет "Фоновый", очевидно, все будет медленнее. Я также попытался создать новый поток вместо использования диспетчера, но существенных изменений не было.
Как я могу исправить эту проблему и вообще улучшить производительность моего приложения, когда добавляю свои фигуры в Canvas?
Спасибо.