【发布时间】:2012-03-27 21:03:21
【问题描述】:
我正在做一个关于用 C# 语言呈现 PDF 的项目。我将 PDF 文件的每一页转换为图像,并通过以下代码将其添加到带有新线程的 ObservableCollection:
ThreadStart myThreadDelegate = new ThreadStart(DoWork);
myThread = new Thread(myThreadDelegate);
myThread.SetApartmentState(ApartmentState.STA);
void DoWork()
{
for (int i = 0; i < pdfFile.Pages.Count; i++)
{
PdfPage page=pdfFile.LoadPage(i);
myObservableCollection[i]=page;
}
}
然后将 myObservableCollection 的自定义项传递给另一个 UserControl 进行渲染,但出现异常:
调用线程无法访问该对象,因为不同的 线程拥有它。
我知道如果我使用 UI 线程,我的问题可以解决,但我想在后台加载 pdf 页面,用户不需要等待加载所有页面,这可以通过新线程来实现。
【问题讨论】:
标签: c# wpf multithreading observablecollection