我正在創建一組記錄的PDF控制檯應用程序。如果計數超過9000,則會發生「創建窗口句柄錯誤」錯誤。在應用程序級別,我使用6個線程。如何減少控制檯應用程序的用戶對象和句柄
正如我在任務管理器中觀察到的句柄越來越多,用戶對象也在增加。
我已經寫了obj.Dispose方法,我曾經創建過這個對象。所以現在我的問題是如何減少用戶對象和句柄。
我在C#中使用3.5框架的控制檯應用程序。
更新:
下面是我已經使用
Thread FirstTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess());
FirstTreadPDFs.Start()的代碼;
// Thread2 Thread SecondTreadPDFs = new Thread(()=> objPDFsProcess.DoGeneratePDFsProcess()); SecondTreadPDFs.Start(); ()=> objPDFsProcess.DoGeneratePDFsProcess2()); //這個線程是一個線程, ThirdTreadPDFs.Start();
// Thread4 Thread FourthTreadPDFs = new Thread(()=> objPDFsProcess.DoGeneratePDFsProcess()); FourthTreadPDFs.Start();
// Thread5 Thread 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+條記錄後,退出嘗試行正在執行並停止應用程序。
哪裏我使用的對象我放置Dispose方法。
請告訴我們你的代碼... –