Кажется, это общая потребность в вашем проекте. Я думаю, что вы можете получить те же результаты с чем-то более многократно используемым ...
Может быть, вам стоит попробовать это:
public async Task Refresh()
{
await Task.WhenAll(
AddAndNotify(new ObservableCollection<object>(), GetA(), "CollectionA"),
AddAndNotify(new ObservableCollection<object>(), GetB(), "CollectionB"),
AddAndNotify(new ObservableCollection<object>(), GetC(), "CollectionC")
);
// Then, do something
}
public async Task AddAndNotify<T>(ObservableCollection<T> collection, Task<IEnumerable<object>> getElementsService, string propertyNameToNotifyChanged)
{
collection.AddRange(await Task.Run(() => getElementsService));
RaisePropertyChanged(propertyNameToNotifyChanged);
}
В этом примере у меня есть такие методы «Get»:
public async Task<IEnumerable<object>> GetA()
{
return new List<object>( new [] { (object)null });
}
Таким образом, три вызова будут сделаны «параллельно».
Надеюсь, это поможет.