ASP.NET发票应用程序有一个保存按钮,该按钮使用表单数据、userID等在磁盘上触发(除其他外)生成pdf文件。
GeneratePDF方法的摘录:
ManualResetEvent generateInvoiceEvent;
generateInvoiceEvent = new ManualResetEvent(false);
CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture;
ThreadPool.QueueUserWorkItem(delegate
{
Thread.CurrentThread.CurrentCulture = currentCulture;
Thread.CurrentThread.CurrentUICulture = currentCulture;
InvoicePdfGenerator generator = new InvoicePdfGenerator();
generator.SetTranslationFile(GetFileSharedFilePath());
generator.DrawPdf(invoiceXml, pdfFilePath, invoiceLanguage.ValueCode,
currentCulture, invoiceLayoutXml, imageRootFolder);
generateInvoiceEvent.Set(); //Signal completion of invoice generation
}
);
generateInvoiceEvent.WaitOne();由于某些原因,WaitOne()方法大部分时间抛出一个AccessViolation ,但并不总是抛出,但我似乎无法进一步调试。除此之外,还有mscorlib。
在这个故事中,有三件事是很重要的:
很有可能,这个问题需要更多的信息。由于我对线程的理解受到严重限制,我将根据您的要求更新我的问题。
发布于 2013-10-30 13:09:22
显然(不要在这里开枪,我意识到这是可怕的、可怕的编码,因为它只解决不了进程),我可以通过将前面提到的代码块封装在try-catch中来解决问题。
可悲的是,这并没有透露任何可能导致AccessViolation的暗示。
https://stackoverflow.com/questions/19680635
复制相似问题