Witam, mam taki mały problem w c# / WPF
Otóż mam aplikacje 3 wątkową (+ wątek główny) i praca każdego z tych wątków polega na przeglądaniu elementów listy i operacje na nich, oczywiście w pętli foreach. Problem polega na tym, że w czasie kiedy jeden wątek jest w trakcie przeglądania listy, a drugi wtedy doda lub usunie element z listy to na pierwszym wyskakuje exception błąd podczas wyliczania, no i jak sobie z tym poradzić?
Ja wymyśliłem 3 sposoby, nie wiem czy są coś warte, dlatego chciałbym spytać mądrzejszych i bardziej doświadczonych ode mnie jak ominąć ten problem. A te moje pomysły to:
- zmienić foreach na for, wtedy przy przejściu do następnego elementu liczenie będzie odbywało się na nowo, błąd nie wystąpi, ale przy dużej liczbie elementów listy pewnie będą spore straty na wydajności
- wrzucić operacje na listach do sekcji krytycznej, rozwiązanie oczywiste, no ale najmniej mi sie podoba bo co to za program wielowątkowy kiedy pracować na raz może tylko jeden wątek (praca każdego wątku to tylko i wyłącznie operacja na liście)
- przed pętlą foreach przepisać całą liste na nową i to na niej operować, tylko czy to nie będzie zajmować za dużo czasu?