Mam aplikację, która ma listę obiektów przechowywanych w statycznej równoległej torbie.ConcurrentBag Alternative In Portable Class Library
Interfejs użytkownika ma licznik czasu, który uruchamia metody, które mogą aktualizować obiekty w aplikacji ConcurrentBag.
Tylko jeden wątek (Rozpoczęty przez zegar) będzie próbował zaktualizować te obiekty. Jednak ten wątek wyliczy listę, a następnie zaktualizuje elementy w toku.
W tym samym czasie te obiekty można odczytać za pomocą wątku interfejsu użytkownika.
ConcurrentBag działa idealnie na to, co chcę robić. Cała logika biznesowa jest w osobnym projekcie i muszę teraz przenieść wszystko na IOS i Androida. Robię to z Xamarinem i tak przekształcam logikę biznesową w Portable Class Library.
Mimo że wszystko, na co jestem ukierunkowany, wydaje się wspierać ConcurrentBag, gdy próbuję uzyskać do niego dostęp w PCL, System.Collections.Concurrent nie jest dostępny. Nawet jeśli kierujemy się tylko aplikacjami sklepu .net 4.5 i nowszymi + Windows (obie używałem ConcurrentBags do)
Jeśli istnieje inna alternatywa dla ConcurrentBag, czy lepiej dla mnie po prostu tworzyć osobne projekty dla każdego systemu docelowego?
Której wersji VS są których używasz i jakie cele PCL wybierasz? Jeśli na przykład wybiorę * .NET 4 *, * Windows (aplikacje Store) 8 *, * Xamarin.Android * i * Xamarin.iOS * w VS2013 Update 2RC, mogę z powodzeniem zastosować 'ConcurrentBag' w moim kodzie. Dopóki nie celujesz w * Windows Phone * lub * Silverlight *, nie powinieneś mieć problemów z używaniem 'ConcurrentBag' w twoim PCL. –
Dzięki Anders. Obecnie korzystam z Aktualizacji 1, więc teraz pobieram aktualizację 2, aby sprawdzić, czy to pomaga. Czy wszystkie wersje Win Phone nie będą działać? – Oli
Właśnie sprawdziłem; Przestrzeń nazw 'System.Collections.Concurrent' jest * nie * zawarta w żadnej wersji WP, włączając w to 8.1. Przy okazji, wydaje się dziwne, że nie masz dostępu do 'ConcurrentBag' na VS 2013 Update 1, o ile unikasz celów WP/Silverlight? Czy sprawdziłeś dwukrotnie, czy nie działa on w aktualizacji 1, nawet gdy kierujesz się na .NET 4, Windows (Store) 8, Xamarin.Android i Xamarin.iOS? –