我有为一组记录创建 PDF 的控制台应用程序。如果计数为 9000 以上,则会发生“创建窗口句柄时出错”的错误。在应用程序级别我使用 6 个线程。
正如我在任务管理器中观察到的,句柄在增加,用户对象也在增加。
我已经在创建对象的地方编写了 obj.Dispose 方法。所以现在我的问题是如何减少用户对象和句柄。
我在 C# 中使用带有 3.5 框架的控制台应用程序。
更新:
下面是我用过的代码
Thread FirstTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess());
FirstTreadPDFs.Start();
//Thread2 线程 SecondTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess()); SecondTreadPDFs.Start();
//Thread3 线程 ThirdTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess2()); ThirdTreadPDFs.Start();
//Thread4 线程FourthTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess()); FourthTreadPDFs.Start();
//Thread5 线程 FifthTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess1()); FifthTreadPDFs.Start();
FirstTreadPDFs.Join(); SecondTreadPDFs.Join(); ThirdTreadPDFs.Join(); FourthTreadPDFs.Join(); FifthTreadPDFs.Join();
DataSet dsHeader1 = new DataSet();
//Pending Cusotmers need to get to generate PDFs
dsHeader1 = objCustStatementDAL.GetCustStatementdetailsForPDF(IsEDelivery, 1);
if (dsHeader1 != null && dsHeader1.Tables.Count > 0)
{
if (dsHeader1.Tables[0].Rows.Count > 0)
{
writerLog.WriteLine(DateTime.Now + " Trying to get Pending Records");
objPDFsProcess.DoGeneratePDFsProcess2();
writerLog.WriteLine(DateTime.Now + " Exit Trying to get Pending Records block");
}
}
dsHeader1.Dispose();
在执行 9000+ 条记录后,Exit Trying 行正在执行并停止应用程序。
我在哪里使用我放置的对象 Dispose 方法。