我有 4 个任务,每个任务都运行相同的方法,但参数不同。每个任务都从数据表中读取数据。
编辑:我需要分析的数据太大而无法将其全部加载到内存中。因此,我将使用分页来检索较小的数据块。因此,该过程如下:
使用 for 循环/task.Factory 创建 X 个任务,并手动将参数分配给每个任务。(我已经研究了并行 for 循环。)
等到所有任务都运行完第一页数据。
将第二页数据加载到数据表中。
相同的 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 个不同的 myList,因为我有 4 个任务)或者它的值是否会在所有任务之间共享?