0

我有一个控制台应用程序,通过使用这个应用程序我将创建 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);

问候,

普拉萨德

4

0 回答 0