Pobieranie wartości pól obiektu, w trakcie ich aktualizacji.

1

Wątek równoległy może przesłać zmiany w evencie. A obsługiwać go będzie wątek główny. Pozbywamy się wtedy problemu zapisu i odczytu w jednym momencie

0

Poczytaj o eventach, następnie przekaż handler do nowego wątku i używaj go, wybacz ale komputera nie mam przy sobie a z komórki to samobójstwo pisać kod 😁

2

Z ciekawości. Jak ma sens ma u Ciebie odczytywanie co 100 ms skoro aktualizacją trwa 1 s.
Jak pisal @somekind, ConcurrentDictionary chyba rozwiązuje problem.
Ja bym xhyba zrobił event po aktualizacji i nie potrzebujesz żadnego sprawdznia co 100 ms.

1

No właśnie - skoro czytasz częściej niż piszesz, to brzmi jakbyś dane chciał mieć aktualne. A w tej sytuacji, to może lepiej odwrócić przepływ i niech źródło danych informuje o jego aktualizacji klientów? Może w ogóle żaden słownik nie jest potrzebny.

0
jacek.placek napisał(a):

Z ciekawości. Jak ma sens ma u Ciebie odczytywanie co 100 ms skoro aktualizacją trwa 1 s.

To wymusza program nadrzędny (ze swoim językiem programowania), a mój program jest pluginem do tego programu, z funkcjami czytającymi poszczególne dane z kolekcji klas zawierające te dane. Całość nadzoruje FORMa (jeden z elementów mojego plugina), która uruchamia się po zalogowaniu. Póki nie ma nowych danych, to funkcja czyta ciągle poszczególne (użytkownik decyduje w funkcji jakie) składowe tej kolekcji (co 100 ms). Plugin ma także, można powiedzieć Event, który informuje o przybyciu nowych danych. W tym momencie FORMa pobiera te dane/wprowadza zmiany do już istniejących w kolekcji i przy którymś zapytaniu funkcja w programie nadrzędnym odbiera już nowe dane.
Na razie zrobiłem tak, że po Evencie ustawiana jest zmienna, która nakazuje funkcji pobierać dane z kopii kolekcji, a jak już Event skończy aktualizować dane w kolekcji, to umożliwiam pobieranie już z oryginalnej kolekcji (aktualizacja trwa właśnie około 1 s).

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