내 xps 문서로드 및보기는 정상적으로 작동하지만 문서를로드하는 데 오랜 시간이 걸리고 사용자 인터페이스가 비활성 상태로 표시됩니다.documentviewer 및 backgroundworker
XpsDocument xpsDocument = new XpsDocument(@"Resources\maintManual.xps", FileAccess.Read);
documentViewer1.Document = xpsDocument.GetFixedDocumentSequence();
그래서, 내가있는 BackgroundWorker를 통해 문서를로드하려고 :
private void maintBtn_TouchDown(object sender, TouchEventArgs e) // load and view maint manual
{
BackgroundWorker worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.DoWork += worker_DoWork;
worker.ProgressChanged += worker_ProgressChanged;
worker.RunWorkerCompleted += worker_RunWorkerCompleted;
worker.RunWorkerAsync();
}
void worker_DoWork(object sender, DoWorkEventArgs e) // do work
{
XpsDocument xpsDocument = new XpsDocument(@"Resources\maintManual.xps", FileAccess.Read);
documentViewer1.Document = xpsDocument.GetFixedDocumentSequence();
}
을 즉시 "Dowork"는 UI "충돌"실행될 때 (완전히 잠급니다). 이유를 찾을 수없는 것 같습니다. 백그라운드 작업자를 통해 문서를 호출하는 더 좋은 방법이 있습니까? 앞에서 말했듯이, Dowork 대괄호의 코드는 백그라운드 작업자 외부에서 작동합니다. 따라서 코드가 옳다는 것을 알고 있습니다. 일단 배경 작업자가 사용되면 작동을 멈 춥니 다. 충분한 정보가 없으면 사전에 용서해주십시오. 나는 주니어 코더이고이 사이트에 새로운 사람이다.
봐 : http://stackoverflow.com/questions/1862590/how-to-update-gui- with-backgroundworker 아마도 도움이됩니다. – BWA