我从System.ComponentMode.BackgroundWorker的DoWork方法中创建了一个WPF对象——FlowDocument,但我无法在WPF UI线程中访问它。
我听说当我在另一个线程中访问WPF对象时,需要使用dispatcher()方法。但是RunWorkerCompleted()不是UI的另一个线程,所以我感到困惑。 我该如何访问myFlowDocument?
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)
{
//runtime error occured here.
fviewer.Document = (FlowDocument)e.Result;
}
}
}
我听说当我在另一个线程中访问WPF对象时,需要使用dispatcher()方法。但是RunWorkerCompleted()不是UI的另一个线程,所以我感到困惑。 我该如何访问myFlowDocument?