如何使异步任务列表向 Observable 集合添加元素?
How to make a List of Async Tasks add elements to an Observable Collection?
我正在尝试将以下方法并行转换为 运行:
List<(DateTime start, DateTime end)> dates = CreateDateListTuple();
foreach ((DateTime start, DateTime end) date in dates)
{
dBInfos.Add(await GetDBInfo(date.start, date.end));
}
我试图尝试的是首先创建任务列表:
List<Task<DBInfo>> parallelTasks = new List<Task<>>;
foreach((DateTime start,DateTime end) date in dates)
{
parallelTasks.Add(GetDBInfo(date.start, date.end));
}
然后运行并行处理这些任务:
var continuation = await Task.WhenAll(parallelTasks.ToArray());
continuation.Wait();
然后将结果添加到集合中:
foreach (var result in continuation.Result)
{
dBInfos.Add(result);
}
发生了什么,程序在
continuation.Wait();
命令,没有抛出任何异常。实施可能有什么问题?
问题已通过将代码末尾重写为:
解决
DBInfo[] continuation = await Task.WhenAll(parallelTasks.ToArray());
foreach (DBInfo result in continuation)
{
dBInfos.Add(result);
}
我正在尝试将以下方法并行转换为 运行:
List<(DateTime start, DateTime end)> dates = CreateDateListTuple();
foreach ((DateTime start, DateTime end) date in dates)
{
dBInfos.Add(await GetDBInfo(date.start, date.end));
}
我试图尝试的是首先创建任务列表:
List<Task<DBInfo>> parallelTasks = new List<Task<>>;
foreach((DateTime start,DateTime end) date in dates)
{
parallelTasks.Add(GetDBInfo(date.start, date.end));
}
然后运行并行处理这些任务:
var continuation = await Task.WhenAll(parallelTasks.ToArray());
continuation.Wait();
然后将结果添加到集合中:
foreach (var result in continuation.Result)
{
dBInfos.Add(result);
}
发生了什么,程序在
continuation.Wait();
命令,没有抛出任何异常。实施可能有什么问题?
问题已通过将代码末尾重写为:
解决 DBInfo[] continuation = await Task.WhenAll(parallelTasks.ToArray());
foreach (DBInfo result in continuation)
{
dBInfos.Add(result);
}