Мне нужно динамически генерировать FlowDocument
из большого набора данных. Поскольку этот процесс занимает несколько минут, я хотел бы выполнить операцию в фоновом потоке, а не зависать в пользовательском интерфейсе.
Однако я не могу сгенерировать FlowDocument
в потоке, отличном от пользовательского интерфейса, иначе попытки вставить прямоугольники и изображения вызывают ошибки времени выполнения, жалующиеся на то, что это не поток STA.
В StackOverflow есть несколько потоков, которые, похоже, связаны с той же проблемой, что и у меня:
Доступ к FlowDocument WPF в фоновом процессе
WPF: невозможно ли загрузить пользовательский интерфейс в фоновом потоке?
В первой ссылке кто-то предлагает следующее:
"Что бы я сделал: использовал
XamlWriter
и сериализовалFlowDocument
вXDocument
. Задача сериализации включает в себяDispatcher
, но как только это будет сделано, вы сможете запускать столько дурацких параллельных анализов данных, сколько хотите, и ничего в пользовательский интерфейс повлияет на это. (Кроме того, когда этоXDocument
, вы запрашиваете его с помощьюXPath
, который является довольно хорошим молотком, если ваши проблемы на самом деле являются гвоздями.)"
Кто-нибудь может пояснить, что автор имеет в виду?