В настоящее время я работаю над системой WPF (с C # за кулисами), которая требует рендеринга данных из множества различных файлов. Большинство из этих файлов - документы AutoCAD. Каждый файл поставляется с набором данных, которые нам нужно нарисовать на экране по существу на одном и том же холсте. Думайте о каждом файле как о потенциальном «слое» или наложении, которое должно появиться на экране.
В настоящий момент каждый графический источник анализируется и преобразуется в набор Path объектов. Каждая коллекция путей отображается на собственном Canvas , так что его видимость может быть включена или выключена. Каждый из этих холстов сделан дочерним по отношению к родительскому холсту, к которому применен набор преобразований. Эти преобразования имеют базовое масштабирование и преобразуют преобразования рендеринга, которые используются для поддержки панорамирования и масштабирования просматриваемого изображения.
Эта функциональность в настоящее время работает нормально, но медленно. Мы визуализируем довольно много объектов Path на экране, и загрузка / создание этих экземпляров Path занимает довольно много времени.
Скорость загрузки сама по себе не является большой проблемой; на самом деле проблема в том, что мне нужно создавать экземпляры Path в потоке пользовательского интерфейса, в противном случае я не могу отобразить их все на одном холсте. Следовательно, во время загрузки весь пользовательский интерфейс блокируется , и пользователь ничего не может сделать.
Я много искал в Интернете, но, похоже, не могу найти решение этой проблемы. Я наткнулся на одну статью (к сожалению, у меня больше нет ссылки), в которой описан способ размещения элементов, созданных в разных потоках в одном окне . Это не сработало для меня вообще. Я попробовал комбинацию вещей, которые я нашел в статье, но у меня не получилось ничего визуализировать.
Так что, я думаю, суть моего вопроса такова: возможно ли создать набор объектов пользовательского интерфейса, в частности объектов Path, в разных потоках, затем загрузить их в родительский холст в основном потоке пользовательского интерфейса и заставить их все играть хорошо вместе? Будем весьма благодарны за любые ссылки, статьи или учебники.
Я с нетерпением жду вашей помощи! Спасибо за чтение.
OJ
Редактировать 1: Каждый из экземпляров Path представляет собой одну строку с цветом. Они не сложны. Но кажется, что создание самих этих объектов - это то, что занимает время (я могу ошибаться). Спасибо!