我正在使用任务来执行一些流程。任务将处于循环状态,我不确定会有多少任务/迭代。它会不时变化。如何使用任务?下面是我的代码。
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[] 任务
使用 null,我将收到 Object reference not set to an instance of an object
错误。
如果我让它未赋值,我会收到Use of unassigned variable
错误。
最佳答案
如果您不知道在编译时需要多少任务对象,您可以使用任务列表。
List<Task> tasks = new List<Task>();
在列表中添加新创建的任务。
foreach(DirectoryInfo D1 in CurrentDirectoryInfo.GetDirectories)
{
tasks.Add(Task.Factory.StartNew(() =>func1(d1.FullName)));
}
为目录对象创建任务对象的代码没有意义。您应该考虑替代方法,您可能会以更有效的方式使用单个任务来实现这一点。
关于c# - 使用 Task[] 对象引用时未设置为对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20257675/