var hs = new HashSet<int>();
foreach(var item in mainclass)
{
Task<List<Class1>> cl1Task = Task.Factory.StartNew<List<Class1>>(() =>
{
if (!hs_VersiodIDs.Contains(item.VersionID))
{
return new List<Class1>(.....);
}
else
{
return null;
}
});
Task.WaitAll(cl1Task );
}
它不等待任务完成。问题是返回null,那么我怎么能返回空任务呢?
答案 0 :(得分:2)
您的代码没有任何意义,原因有两个:
如果任务中的代码真的很简单,请将代码更改为:
foreach(var item in mainclass)
{
List<Class1> result;
if (!hs_VersiodIDs.Contains(item.VersionID))
{
result = new List<Class1>(.....);
}
else
{
result = null;
}
}
如果任务中的代码确实做了一些昂贵的代码,请将代码更改为:
var tasks = new List<Task>();
foreach(var item in mainclass)
{
Task<List<Class1>> cl1Task = Task.Factory.StartNew<List<Class1>>(() =>
{
if (!hs_VersiodIDs.Contains(item.VersionID))
{
return new List<Class1>(.....);
}
else
{
return null;
}
});
tasks.Add(cl1Task);
}
// note, WaitAll is outside the loop, so now our tasks can all run in parallel
Task.WaitAll(tasks.ToArray());