Aplicativo WPF multithread: Chamada do Dispatcher. Uma maneira mais eficiente?

Utilizando o .NET 3.5

Oi pessoal, estou fazendo um aplicativo WPF para um projeto e estava apenas procurando um pouco de insight sobre o Dispatcher e o multithreading. Um exemplo do meu programa:

Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(
                        () =>_aCollection.Add(new Model(aList[i], aSize[i]))));

Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(
                        () => _Data.Add(new DataPoint<double, double>(Id, aList[i]))));

 Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(
                        () => _historical[0].Add(aList[i])));

Entendo que o WPF não gosta quando outro thread acessa um objeto diferente daquele que o criou. No entanto, eu estava pensando que certamente deveria haver uma maneira melhor do que fazer tantas chamadas do expedidor, alguém poderia por favor me empurrar na direção certa (pelo menos, se houver uma solução melhor).

Cheers, Sparky