Вы можете начать с того, чтобы быть менее многословным в своих вызовах, т.е.
Application.Current.Dispatcher.Invoke(() =>_aCollection.Add(new Model(aList[i], aSize[i])));
Еще один прием, который мне нравится использовать, заключается в создании быстрого метода, подобного этому:
public static void UiInvoke(Action a)
{
Application.Current.Dispatcher.Invoke(a);
}
Тогдавам нужно сделать еще меньше, например:
UiInvoke(() =>_aCollection.Add(new Model(aList[i], aSize[i])));
Использование dispatcher.Invoke () - это просто способ вернуть действие обратно в поток пользовательского интерфейса, где, вероятно, и были созданы эти объекты (_aCollection).на первом месте.Если рассматриваемые элементы не имеют прямого взаимодействия с потоком пользовательского интерфейса, то вы можете создавать / манипулировать ими в другом потоке, избавляя от необходимости использовать диспетчер.Конечно, этот подход может стать более сложным в зависимости от того, что вы делаете.