我有一个Windows服务。并且在服务启动期间调用以下函数。
static public void SaveXpsPageToJpeg(string xpsFileName, int[] pages){
using (XpsDocument xpsDoc = new XpsDocument(xpsFileName, System.IO.FileAccess.Read)){
FixedDocumentSequence docSeq = xpsDoc.GetFixedDocumentSequence();
DocumentPaginator paginator = docSeq.DocumentPaginator;
// You can get the total page count from docSeq.PageCount
foreach(int pageNum in pages){
using (DocumentPage docPage = paginator.GetPage(pageNum)){
BitmapImage bitmap = new BitmapImage();
RenderTargetBitmap renderTarget =
new RenderTargetBitmap((int)docPage.Size.Width,
(int)docPage.Size.Height,
96, // WPF (Avalon) units are 96dpi based
96,
System.Windows.Media.PixelFormats.Default);
renderTarget.Render(docPage.Visual);
JpegBitmapEncoder encoder = new JpegBitmapEncoder(); // Choose type here ie: JpegBitmapEncoder, etc
encoder.Frames.Add(BitmapFrame.Create(renderTarget));
using (FileStream pageOutStream = new FileStream(xpsDoc + ".Page" + pageNum + ".jpg", FileMode.Create, FileAccess.Write)){
encoder.Save(pageOutStream);
pageOutStream.Close();
}
}
}
}
}
相同的代码与WPF应用程序完美运行。 但是当我在服务中调试它时会引发异常
我还添加了异常和内部细节的屏幕截图
http://imageshack.us/photo/my-images/62/97453717.png/
http://imageshack.us/photo/my-images/850/95569721.jpg/
我还尝试在配置管理器中更改X64,X86和AnyCPU
我正在使用Visual Studio 2010,.Net Framework 4
任何人都可以帮忙
答案 0 :(得分:0)
我必须自己找到解决方案。
Visual Studio创建的大多数项目默认设置为MTA。 我不得不在STA线程中运行我的代码。
终于...!