Ich habe ein 'FlowDocument', ein WPF-Objekt, aus dem DoWork von System.ComponentModel.BackgroundWorker erstellt, aber ich kann nicht darauf im WPF-UI-Thread zugreifen.
using System;
using System.Windows;
using System.Windows.Documents;
using System.ComponentModel;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
BackgroundWorker bw = new BackgroundWorker();
public MainWindow()
{
InitializeComponent();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerCompleted+=new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);
bw.RunWorkerAsync();
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
FlowDocument myFlowDocument = new FlowDocument();
Paragraph myParagraph = new Paragraph();
myParagraph.Inlines.Add(new Bold(new Run("Some bold text in the paragraph.")));
myFlowDocument.Blocks.Add(myParagraph);
e.Result = myFlowDocument;
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
// Laufzeitfehler trat hier auf.
fviewer.Document = (FlowDocument)e.Result;
}
}
}
Ich habe gehört, dass wenn ich auf ein WPF-Objekt in einem anderen Thread zugreife, muss ich Dispatcher verwenden. Aber RunWorkerCompleted() ist kein anderer Thread des UI, also bin ich verwirrt. Wie kann ich auf das myFlowDocument zugreifen?