<p>It seems the ObservableCollection only support add, remove, clear operation from the UI thread, It throw Not Support Exception if it is operated by a NO UI thread. I tried to override methods of ObservableCollection, unfortunatly, I met lots of problems.
Any one can provide me a ObservableCollection sample which can be operated by multi-threads?
Many thanks!</p>

Using the link provided by
Kent
, you could use the following code to modify a collection across threads:
```
```
while (!Monitor.TryEnter(_lock, 10))
{
   DoEvents();
}

try
{
   //modify collection
}
finally
{
   Monitor.Exit(_lock);
}
```
```
If however you're just looking to modify the collection on your original thread you can try using a callback to your UI thread. I normally do something like this:
```
```
this.Dispatcher.Invoke(new MyDelegate((myParam) =>
{
  this.MyCollection.Add(myParam);
}), state);
```
```