大きなエクセル(10kレコード)を処理しています。このプロセスを複数のスレッドで実行してパフォーマンスを向上させる必要があります。行を複数の等しいロットに分割し、繰り返し処理する方法
今は行< = 2000の場合はチェックしていますが、Utils.IxGenerateWithDataをすべてのレコードで正常に実行できます。しかし、行> 2000(たとえば10k)の場合、これらを複数のスレッドに分割してUtils.IxGenerateWithDataを処理し、それぞれ2000個のレコードで記録したいと考えています。
using (Stream contentStream = await requestContent.ReadAsStreamAsync())
{
Workbook workbook = new Workbook(contentStream);
Worksheet worksheet = workbook.Worksheets[0];
int column = 0; // first column
Cell lastCell = worksheet.Cells.EndCellInColumn((short)column);
//Run on multiple threads if the file has more than 2000 records
if (lastCell.Row > 2000)
{
//Not sure what to do here
// Infiniti GenerateWithData Web Service
Thread thread = new Thread(() => Utils.IxGenerateWithData(payloadSettings.ProjectGUID, payloadSettings.DatasourceGUID, xmlContent, payloadSettings.InfinitiUsername, payloadSettings.InfinitiPassword, payloadSettings.ServiceWSDL));
thread.Start();
}
else
{
for (int row = 0; row <= lastCell.Row; row++)
{
Cell cell = worksheet.Cells.GetCell(row, column);
xmlContent += cell.StringValueWithoutFormat;
}
// Infiniti GenerateWithData Web Service
Utils.IxGenerateWithData(payloadSettings.ProjectGUID, payloadSettings.DatasourceGUID, xmlContent, payloadSettings.InfinitiUsername, payloadSettings.InfinitiPassword, payloadSettings.ServiceWSDL);
}
}
私はあなたが助けることができるかどうかは分かりませんが、なぜ「利回り」を使用しないのですか? http://www.ytechie.com/2009/02/using-c-yield-for-readability-and-performance/ –