使用下面的代码,我们遇到了 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));
}