public async Task InvokeTestFromOtherThread() { var collection = new ExtendedObservableCollection <string>(); var firstTask = Task.Run(() => { for (var i = 0; i <= 99999; i++) { collection.Add("test1"); } }); var secondTask = Task.Run(() => { for (var i = 0; i <= 99999; i++) { collection.Add("test2"); } }); await Task.WhenAll(firstTask, secondTask); Assert.Equal(200000, collection.Count); Assert.Equal(100000, collection.Count(x => x == "test1")); Assert.Equal(100000, collection.Count(x => x == "test2")); }