Tp
using System;
using System.Collections.Concurrent;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
class Program
{
static void Main()
{
// サンプルデータの作成
DataTable dataTable = new DataTable();
dataTable.Columns.Add("ID", typeof(int));
dataTable.Columns.Add("Value", typeof(string));
for (int i = 1; i <= 100; i++)
{
dataTable.Rows.Add(i, $"Value{i}");
}
// 結果を保存する共有リスト
var resultList = new ConcurrentBag<string>();
// ロックオブジェクト
object lockObj = new object();
Parallel.ForEach(dataTable.AsEnumerable(), row =>
{
try
{
// 行ごとの処理
string result = ProcessRow(row);
// 結果の追加
resultList.Add(result);
// ロックを使用した操作(必要に応じて)
lock (lockObj)
{
// 競合が起きやすい操作
}
}
catch (Exception ex)
{
// エラーログ
Console.WriteLine($"Error processing row ID {row["ID"]}: {ex.Message}");
}
});
// 結果の表示
foreach (var result in resultList)
{
Console.WriteLine(result);
}
}
static string ProcessRow(DataRow row)
{
// ここで実際の行ごとの処理を行います
return $"Processed: {row["ID"]}, {row["Value"]}";
}
}
この記事が気に入ったらサポートをしてみませんか?