4 つのタスクがあり、それぞれが同じメソッドを実行していますが、パラメーターが異なります。各タスクは、データテーブルからデータを読み取っています。
編集:分析に必要なデータが大きすぎて、すべてをメモリにロードできません。したがって、ページングを使用して、より小さなデータ ブロックを取得します。したがって、プロセスは次のようになります。
for loop/task.Factory を使用して X 個のタスクを作成し、各タスクにパラメーターを手動で割り当てます。(私はすでに並列forループを調べました。)
すべてのタスクがデータの最初のページの実行を完了するまで待ちます。
2 ページ目のデータをデータ テーブルに読み込みます。
同じ X タスクは、新しいデータを実行することをお勧めします
データベースからすべてのデータが読み取られるまで繰り返します。
編集終了
SQL Server に移動して次のページのデータを取得する前に、各タスクがデータテーブル内のすべてのデータの読み取りを完了するのを待つ方法が必要です。
現在、私は次のことを考えていました: オブジェクト (myEntity) 内で 2 つの変数を宣言し、メソッドに渡します。
1 = 作成されたタスクの数 (myEntity.TaskCount)。
2 = 完了したタスク数のカウンター (myEntity.Count)。
public List<int> GetData(object myEntity)
{
List<int> myList;
if(rowCounter == myDataTable.Rows.Count)
{
myEntity.Count++;
while(myEntity.Count != myEntity.TaskCount)
{
}
//Refill datatable with new data.
//rowCounter = 0;
}
else
{
myList = new List<int>();
//Assign the values to each tasks myList.
}
return myList;
}
[質問 1] タスクを一時停止し、データテーブルを更新してから続行するにはどうすればよいですか?
[質問 2] myList はタスク固有です (つまり、4 つのタスクがあるため、4 つの異なる myList を持つことになります)、またはその値はすべてのタスク間で共有されますか?