只运行最后一个任务
本文关键字:任务 最后一个 运行 | 更新日期: 2023-09-27 18:01:41
我非常想找到一个解决问题的办法。
以下是List<AccountContactView>
中每个项目生成不同任务的代码。
List<AccountContactViewModel> selectedDataList
= DataList.Where(
dataList => (bool) dataList.GetType()
.GetProperty("IsChecked")
.GetValue(dataList, new object[0]) == true
).ToList();
this.IsEnabled = false;
Task validateMarked = Task.Factory.StartNew(() =>
{
foreach (AccountContactViewModel viewModel in selectedDataList)
{
if (viewModel != null)
{
Task validate = Task.Factory.StartNew(
() => ValidateAccount(viewModel),
(TaskCreationOptions)TaskContinuationOptions.AttachedToParent);
}
}
});
validateMarked.ContinueWith(x => this.IsEnabled = true);
现在我的问题是,当它运行时,它只运行数组中的最后一项。知道我做错了什么吗?
我不想使用Parallel.ForEach
,因为它不提供必要的并行效果,以增加基于每个任务完成的进度条
这可能是lambda作用域问题。
您是否尝试在将viewModel传递给StartNew方法之前将其分配给本地变量
...
Task validateMarked = Task.Factory.StartNew(() =>
{
foreach (AccountContactViewModel viewModel in selectedDataList)
{
var localViewModel = viewModel;
if (localViewModel != null)
{
Task validate = Task.Factory.StartNew(
() => ValidateAccount(localViewModel),
(TaskCreationOptions)TaskContinuationOptions.AttachedToParent);
}
}
});
...