If you initialize the collection in the constructor it will be on the default Application thread.
To invoke the main thread you can do this:
Application.Current.Dispatcher.Invoke((Action)(() =>
{
//Do something here.
}));
You have to cast the Anonymous delegate as an action otherwise it gets confused ¯\O_o/¯
If you are using the Async CTP then you can do this
Application.Current.Dispatcher.InvokeAsync(()=>
{
//Do something here.
});