0

私はコンソール アプリケーションを持っています。このアプリケーションを使用して 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);

よろしく、

プラサード

4

0 に答える 0