Cześć, komunikującą się asynchronicznie przez TCP do tego celu korzystam z "SuperSimpleTCP". Jest to aplikacja WPF i staram się trzymać wzorca MVVM. Klasy ViewModel mam w osobnym projekcie cała komunikacja w obrębie projektu odbywa się bez problemu do momentu gdy aktualizowane są dane otrzymane od klientów TCP, wyrzuca wtedy błąd(dzieje się to podczas dodawania/usuwania elementu "ObservableCollection"):
System.NotSupportedException: 'Ten typ CollectionView nie obsługuje zmian własnej kolekcji SourceCollection z wątku innego niż Dispatcher.'
Normalnie użyłbym do tego Dispatchera jednak przy takiej strukturze aplikacji nie mam do niego dostępu, i tu pojawia się pytanie co zrobić w takim wypadku albo jakiego rozwiązania szukać?
public ObservableCollection<SensorViewModel> AddToList(ObservableCollection<SensorViewModel> list)
{
if (list != null)
{
var toRemove = list.Where(s => s.Id == this.Id).ToList();
foreach (var sensor in toRemove)
{
list.Remove(sensor);//<<<<<<<<-------- Miejsce wystąpienia błędu
}
}
list.Add(this);
var sortedList = list.OrderBy(s => s.Id);
ObservableCollection<SensorViewModel> listOut = new ObservableCollection<SensorViewModel>();
foreach (var sensor in sortedList)
{
listOut.Add(sensor);
}
saveToFile(listOut);
return listOut;
}