private void Button_Click(object sender, RoutedEventArgs e)
{
new Thread(() =>
{
FlowDocument doc = new FlowDocument();
Paragraph paragraph = new Paragraph();
paragraph.LineHeight = 2;
paragraph.Inlines.Add(new Bold(new Run("11111"))
{
Foreground = Brushes.White,
Background = Brushes.Black
});
doc.Blocks.Add(paragraph);
rr(doc);
}).Start();
}
private void rr(FlowDocument d)
{
this.richtextbox1.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => {
this.richtextbox1.Document = d; }));
}
выдает ошибку:
"The calling thread cannot access this object because a different thread owns it."
тоже самое если попробовать richtextbox1.Document.Blocks.Add(paragraph).
А вот richtextbox1.AppendText(text) идет без проблем.
Вы создали FlowDocument в одном потоке. А обращаетесь к нему в другом. Так делать не получится. Организуйте паттерн Builder(Строитель), пусть он занимается созданием FlowDocument но уже в основном потоке.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости