¿Existe una colección Threadsafe Observable en .NET 4?

Plataforma:WPF, .NET 4.0, C# 4.0

Problema: en Mainwindow.xaml tengo un ListBox vinculado a una colección Customer que actualmente es ObservableCollection <Customer>.

ObservableCollection<Customer> c = new ObservableCollection<Customer>();

Esta colección se puede actualizar a través de múltiples fuentes, como FileSystem, WebService, etc.

Para permitir la carga paralela de clientes, he creado una clase auxiliar

public class CustomerManager(ref ObsevableCollection<Customer> cust)

que genera internamente una nueva Tarea (de la biblioteca de extensiones paralelas) para cada Origen de cliente y agrega una nueva instancia de Cliente al objeto de colección del cliente (pasado por ref a su ctor).

El problema es que ObservableCollection <T> (o cualquier colección para el caso) no se puede usar desde llamadas que no sean el hilo de la interfaz de usuario y se encuentra una excepción:

"NotSupportedException: este tipo de CollectionView no admite cambios en su SourceCollection desde un subproceso diferente del subproceso Dispatcher".

Traté de usar el

System.Collections.Concurrent.ConcurrentBag<Customer>

colección pero no implementa la interfaz INotifyCollectionChanged. Por lo tanto, mi interfaz de usuario WPF no se actualizará automáticamente.

Entonces, ¿hay una clase de colección que implemente las notificaciones de cambio de propiedad / colección y también permita llamadas de otros subprocesos que no sean UI?

Según mi bing / google inicial, no se proporciona ninguno fuera de la caja.

Editar: creé mi propia colección que hereda deConcurrentBag <Cliente> y también implementa elINotifyCollectionChanged interfaz. Pero para mi sorpresa, incluso después de invocarlo en tareas separadas, la interfaz de usuario de WPF se cuelga hasta que se completa la tarea.¿No se supone que las tareas se ejecutan en paralelo y no bloquean el hilo de la interfaz de usuario??

Gracias por cualquier sugerencia, de antemano.

Respuestas a la pregunta(4)

Su respuesta a la pregunta