私はコンソール アプリケーションを持っています。このアプリケーションを使用して PDF を作成します。しかし、1 分間で 40 個の PDF を処理しています。そして、PDF の数を減らし続けます。タスク マネージャーで観察したように、CPU 使用率は常に 100% であり、メモリは常に増加しています。マルチスレッドの概念を使用しました。
CPU 使用率とメモリを減らして、1 分で 40 個を超える PDF を作成するにはどうすればよいですか。
Muti スレッドの 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);
よろしく、
プラサード