Pula wątków w C#

0

Witajcie,

ogólnie z wielowątkowością nie mam doświadczenia, szczególnie w C#.
Mam problem, którego moje rozwiązanie przedstawiam poniżej.

1.Klasa Downloader jest zarejestrowana u innej klasy na zdarzenie.
2.W argumentach zdarzenia przesyłana jest lista adresów plików do pobrania
3.Następnie klasa Downloader musi dodać wszystkie te pliki do kolejki pobierania
4.W systemie istnieje 5 wątków pobierających pliki. Każdy z tych wątków wyciąga sobie plik z kolejki, pobiera go, zwraca informacje że ok i wyciąga następny. I tak 5 wątków jednocześnie.

Potrzebuje aby wątek główny klasy Downloader nigdy się nie blokował(więc dodawanie do kolejki nie może być blokujące, przy założeniu że kolejka ma rozmiar nieskończony jest ono spełnione)

Przypomina mi to wszystko troche problem producentów i konsumentów.

Teraz mam pytanie do Was. Jak to zrobić z wykorzystaniem C#? Chciałbym wykorzystać do tego Taski.
W Javie zrobiłbym pewnie blokującą kolejkę i 5 wątków działających w tle. Jakich mechanizmów z C# użyć?

0

Możesz użyć słowa kluczowego lock. Popatrz na ThreadSafeList tutaj:
http://blogs.msdn.com/b/jaredpar/archive/2009/02/16/a-more-usable-thread-safe-collection.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1