首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ManualResetEvent.WaitOne()导致AccessViolation

ManualResetEvent.WaitOne()导致AccessViolation
EN

Stack Overflow用户
提问于 2013-10-30 11:11:47
回答 1查看 399关注 0票数 0

ASP.NET发票应用程序有一个保存按钮,该按钮使用表单数据、userID等在磁盘上触发(除其他外)生成pdf文件。

GeneratePDF方法的摘录:

代码语言:javascript
复制
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

在这个故事中,有三件事是很重要的:

  • 这不是我的代码
  • 我对线程几乎一无所知。这只是我在工作中很少接触到的东西。
  • 直到几周前在我的开发机器上,这还能正常工作。很有可能是一些外部因素造成了这种情况,但我找不到原因或原因。从那时到现在,没有代码更新。

很有可能,这个问题需要更多的信息。由于我对线程的理解受到严重限制,我将根据您的要求更新我的问题。

EN

回答 1

Stack Overflow用户

发布于 2013-10-30 13:09:22

显然(不要在这里开枪,我意识到这是可怕的、可怕的编码,因为它只解决不了进程),我可以通过将前面提到的代码块封装在try-catch中来解决问题。

可悲的是,这并没有透露任何可能导致AccessViolation的暗示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19680635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档