Witam wszystkich
Jestem początkującym w dziedzinie wielowątkowości i mam nurtujący mnie od dłuższego czasu problem, z którym bez Waszej pomocy nie będę sobie w stanie poradzić, a mianowicie próbuję zsynchronizować listę, tak, aby kilka wątków mogło z niej na raz korzystać (dodawanie, usuwanie i pobieranie danych z elementów w niej zawartych).
Operacje na liście wykonuję za pomocą poniższych metod
private void AddToList(List<Zadanie> lista, Zadanie zadanie)
{
ICollection coll = lista;
lock (coll.SyncRoot)
{
lista.Add(zadanie);
}
}
private void RemoveFirstEl(List<Zadanie> lista)
{
ICollection coll = lista;
lock (coll.SyncRoot)
{
lista.RemoveAt(0);
}
}
private int GetPowerFromList(List<Zadanie> lista)
{
int output = 0;
ICollection coll = lista;
lock (coll.SyncRoot)
{
output = lista[0].PowerNeeded;
}
return output;
}
Nie wiem czemu, ale w pewnych momentach, gdy wiele wątków korzysta z danej listy ona po prostu się zawiesza i nie da się na niej dokonywać żadnych operacji, a wykrycie błędu jest strasznie trudne i nie potrafię sobie sam poradzić. Już dwa dni to rozkminiam ...
Może ktoś wprawnym okiem programisty od razu zlokalizuje problem.
Będę wdzięczny za każdą pomoc!