Если вы инициализируете коллекцию в конструкторе, она будет в потоке приложения по умолчанию.
Чтобы вызвать основной поток, вы можете сделать это:
Application.Current.Dispatcher.Invoke((Action)(() =>
{
//Do something here.
}));
Вы должны разыграть анонимного делегата как действие, иначе он запутается ¯ \ O_o / ¯
Если вы используете Async CTP, вы можете сделать это
Application.Current.Dispatcher.InvokeAsync(()=>
{
//Do something here.
});