错误通过c#

时间:2015-09-18 20:49:12

标签: c# wcf migradoc

我通过c#WCF服务使用pdf Migradoc库在我的服务器上创建和保存pdf文档。文件管理将间歇性地失败并且WCF堆栈跟踪指示:

  

服务器在处理请求时遇到错误。异常消息是'重叠I / O操作正在进行中'。

     

在System.Windows的MS.Win32.HwndWrapper..ctor(Int32 classStyle,Int32 style,Int32 exStyle,Int32 x,Int32 y,Int32 width,Int32 height,String name,IntPtr parent,HwndWrapperHook [] hooks)。 System.Windows.Media.Visual..ctor(ResourceType resourceType)中的Threading.Dispatcher..ctor()位于System.Windows.Media.ContainerVisual..ctor(),位于PdfSharp.Drawing.XGraphics..ctor(DrawingContext dc,XSize)大小,XGraphicsUnit pageUnit,XPageDirection pageDirection)在MigraDoc.Rendering.PdfDocumentRenderer.PrepareDocumentRenderer的MigraDoc.Rendering.DocumentRenderer.PrepareDocument()(布局prepareCompletely),位于SARIService.DigAlertPDF.CreateReport(TicketReport TicketData)的MigraDoc.Rendering.PdfDocumentRenderer.RenderDocument()在SyncInvokeGetDAReportInfo(Object,Object []

的SARIService.ServiceDigAlert.GetDAReportInfo(String ID)

一旦发生错误,它将一直持续到服务器重新启动或文件保存尝试需要停止15-20分钟。知道这里发生了什么吗?

由于

1 个答案:

答案 0 :(得分:1)

我怀疑只能有一个ContainerVisual。两个线程同时渲染文档会导致此错误。

闲置约20分钟后,应用程序域将被销毁。下一个渲染请求将创建一个新的应用程序域,渲染将再次起作用。

你可以尝试的事情:

  • 切换到GDI +构建(而不是WPF构建) - 不确定是否支持并发渲染,但很容易尝试
  • 为每个文档创建一个新的AppDomain,这应该避免并发问题