1

使用下面的代码,我们遇到了 Crystal 的问题。

创建 ReportDocuments 似乎可以,但不要同时加载它们(尽管它们是从不同的物理位置加载的)

它在锁到位的情况下工作正常,但移除该锁并冻结!

有没有人有任何想法?

public static object fLock = new object();

private void button1_Click(object sender, EventArgs e)
{
    int[] i = { 1, 2, 3 };
    Parallel.ForEach<int>(i, j => CreateReportOutput(j));
}

private void CreateReportOutput(int j)
{
     CrystalDecisions.CrystalReports.Engine.ReportDocument rpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();

     **lock (fLock)**
         rpt.Load(string.Format("C:\\_Temp\\temptabs\\reports{0:00}\\C_NOTES.RFM", j));

     rpt.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, string.Format("C:\\_Temp\\temptabs\\output_{0}({1:00}).pdf", DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss_fff"), j));
}
4

0 回答 0