Как улучшить производительность рендеринга Canvas?

Я должен нарисовать многоформа (около полутора тысяч) как дети [Холст] [2]. Я делаю это в своем приложении WPF, разделяя работу на две части: сначала я создаю фигуры, устанавливая свойства каждой из них (например, Margin, Fill, Width и т. Д.), После того, как добавляю фигуры как дочерние элементы Canvas.

MyCanvas.Children.Add(MyShape)

Теперь я хочу улучшить производительность второй части, потому что, когда я рисую фигуры, мое приложение блокируется на длительный период времени. Поэтому я попытался использоватьдиспетчер и его метод [BeginInvoke] [4] с различными [приоритетами] [5]: только если я использую приоритет фона, основное приложение не блокируется, в противном случае приложение остается заблокированным, и «картинка» не отображается, пока не будут добавлены все фигуры на мой холст, но если я использую приоритет фона, очевидно, что все идет медленнее. Я также попытался создать новый поток вместо использования Dispatcher, но никаких существенных изменений не произошло.

Как я могу исправить эту проблему и вообще улучшить производительность своего приложения, когда я добавляю свои фигуры в Canvas?

Благодарю.

Ответы на вопрос(4)

Ваш ответ на вопрос