我正在使用Tasks来执行某些过程。任务将循环,我不确定将有多少任务/迭代。它会不时变化。如何使用任务?以下是我的代码。
void func1(string loc)
{
var CurrentDirectoryInfo = new DirectoryInfo(loc);
Task[] tasks; // null
int index = 0;
foreach (DirectoryInfo D1 in CurrentDirectoryInfo.GetDirectories)
{
tasks[index] = Task.Factory.StartNew(() =>func1(d1.FullName));
index++;
}
如果我对Task[] tasks
使用null,则会收到Object reference not set to an instance of an object
错误。
如果我将其保留为未分配状态,则会出现Use of unassigned variable
错误。
答案 0 :(得分:1)
如果您不知道编译时需要多少个任务对象,则可以使用任务列表。
List<Task> tasks = new List<Task>();
在列表中添加新创建的目标。
foreach(DirectoryInfo D1 in CurrentDirectoryInfo.GetDirectories)
{
tasks.Add(Task.Factory.StartNew(() =>func1(d1.FullName)));
}
为目录对象创建任务对象的代码没有意义。您应该考虑替代方法,您可以使用单一任务以更有效的方式实现此目的。