我有一个控制台应用程序,通过使用这个应用程序我将创建 PDF。但它在一分钟内需要 40 个 PDF。并继续减少 PDF 的数量。正如我在任务管理器中观察到的,CPU 使用率始终为 100%,并且内存始终在增加。我使用了多线程概念。
如何减少 CPU 使用率和内存并在一分钟内创建超过 40 个 PDF 的 PDF。
我正在使用多线程的 C# 代码。
我们如何处理 CPU 使用率。如果 CPU 使用率较低,则会生成更多数量的 PDF。
以下是我使用的代码:
// Insert into the datatable
dsHeader = objCustStatementDAL.GetCustStatementdetailsForPDF(IsEDelivery, 0);
//Creating Threads
if (dsHeader.Tables[0].Rows.Count > 0)
{
Thread FirstTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess(IsEDelivery, Cycleid, StmtRunDate, CycleType, dsHeader.Tables[0], writerLog, dsHeader.Tables[6], dsHeader.Tables[7], dsHeader.Tables[8]));
FirstTreadPDFs.Start();
}
if (dsHeader.Tables[1].Rows.Count > 0)
{
Thread SecondTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess1(IsEDelivery, Cycleid, StmtRunDate, CycleType, dsHeader.Tables[1], writerLog, dsHeader.Tables[9], dsHeader.Tables[10], dsHeader.Tables[11]));
SecondTreadPDFs.Start();
}
if (dsHeader.Tables[2].Rows.Count > 0)
{
Thread ThirdTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess2(IsEDelivery, Cycleid, StmtRunDate, CycleType, dsHeader.Tables[2], writerLog, dsHeader.Tables[12], dsHeader.Tables[13], dsHeader.Tables[14]));
ThirdTreadPDFs.Start();
}
if (dsHeader.Tables[3].Rows.Count > 0)
{
Thread FourthTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess(IsEDelivery, Cycleid, StmtRunDate, CycleType, dsHeader.Tables[3], writerLog, dsHeader.Tables[15], dsHeader.Tables[16], dsHeader.Tables[17]));
FourthTreadPDFs.Start();
}
if (dsHeader.Tables[4].Rows.Count > 0)
{
Thread FifthTreadPDFs = new Thread(() => objPDFsProcess.DoGeneratePDFsProcess1(IsEDelivery, Cycleid, StmtRunDate, CycleType, dsHeader.Tables[4], writerLog, dsHeader.Tables[18], dsHeader.Tables[19], dsHeader.Tables[20]));
FifthTreadPDFs.Start();
}
// update in Database
objCustStatementDAL.UpdateCycleStatusinStmtSched(StmtRunDate, Cycleid);
问候,
普拉萨德