【发布时间】:2015-06-19 21:03:43
【问题描述】:
我有私有方法,它尝试生成 pdf 文件,然后用这个 pdf 发送电子邮件。如果一切正常,则此方法将表单上的文本更改为“Pdf 已成功生成”。
我的方法:
private void RegenerateSubmissionPdf(int submissionId)
{
var submissionPath = PublisherConfigurationManager.SubmissionPath + submissionId;
var tasks = new List<Task>
{
HttpContext.Current.GeneratePdfTask(submissionPath, submissionId, PublisherConst.SubmissionPdfName,
_objSubmission.SaveSubmissionPdf)
};
tasks.SendEmailTasks(u => SendRegenerateSubmissionPdfEmail(submissionId, u));
}
返回Task的方法:
public static Task GeneratePdfTask(this HttpContext context, string path, int submissionId, string pdfName, Action<int, byte[]> postAction = null)
{
var local = context;
return Task.Factory.StartNew(() =>
{
HttpContext.Current = local;
SessionHelper.Set(SessionKey.IsPdfRendering, true);
var pdfFile = new PdfGenerator().Generate(path, pdfName, submissionId);
if (postAction != null && pdfFile != null)
{
postAction(submissionId, pdfFile);
}
});
}
在最后一种方法中,有时我会遇到异常(可能路径错误,某些图像丢失或其他)。我找到了this solution,但不知道如何将它应用到我的案例中。
【问题讨论】:
标签: c# asp.net multithreading pdf exception-handling