System.InvalidOperationException: Collection was modified; enumeration operation may not execute.
I am adding/removing from an ObservableCollection which is not on a UI thread.
I have a method names EnqueueReport to add to the colleciton and a DequeueReport to remove from the colleciton.
The flow of steps is as below :-
I am not much in C# libraries. Can someone please guide me on this?
As of .net framwork 4.5 you can use native collection synchronization.
BindingOperations.EnableCollectionSynchronization(YourCollection, YourLockObject);
YourLockObject
is instance of any object e.g. new Object();
. Use one per collection.
This eliminates the need of some special class or anything. Just enable and enjoy ;)
[edit] As stated in the comments by Mark and Ed (thanks for clarifying!), this does not relieve you from locking the collection on updates as it just synchonizes the collection-view-binding and does not magically make the collection thread-safe itself. [/edit]
PS: BindingOperations
resides in Namespace System.Windows.Data
.