Aktywne Wpisy
Tumurochir +238
misiafaraona +157
Czy przywiędła Mirabelka może w życzenia?
#urodziny #zyczenia #shitwykopsays #chwalesie #zalesie #kiciochpyta
#urodziny #zyczenia #shitwykopsays #chwalesie #zalesie #kiciochpyta
Skopiuj link
Skopiuj linkWykop.pl
Mam apke w WPF'ie, która odbiera dane przez SerialPort od trzech czujników (otrzymuje ramki od każdego z czujników na ten sam serialPort a czujnik poznaje po nagłówku ramki). Każdy z czujników wysyła swoją ramkę z częstotliwością jakieś 50 Hz (czyli plus minus otrzymuje ramki z częstotliwością 150 Hz uwzględniając wszystkie). W aplikacji mam m.in 3 obiekty tej samej klasy które reprezentują każdy z czujników. Jeżeli odbiorę ramkę to dane z ramki przekazuje do funkcji (która wykonuje pewne obliczenia) w odpowiednim obiekcie (na podstawie nagłówka ramki). Oprócz tego wszystkiego z częstotlwiością ok 25 Hz będzie chodziła symulacja 3D bazujaca na danych z czujników po przeliczeniu.
Zrobiłem to następująco:
- odpalam wątek który w kółko odbiera dane z serialPort'u.
- gdy odbiorę ramkę to odpalam kolejny wątek w którym wykonuje się funkcja obliczająca dla danego czujnika/obiektu.
(czyli gdy mam 3 czujniki może być tak że 3 'poboczne' wątki zostaną odpalone jeden po drugim dla każdego z czujników. Wątek dla konkretnego czujnika powinien się skończyć przed pojawieniem się kolejnej ramki dla tego czujnika. czyli funkcja obliczająca powinna wyrobić się co 50Hz).
- odpalam timer w którym z częstotliwościową co około 25 Hz następuje update symulacji 3D.
Problem jest w tym że te wszsytkie wąki dodatkowe oprócz oczywiście timera (czyli odbieranie danych z seriala i wątki liczące odplałem przez delegaty i beginInvoke). O ile odpalanie delegaty w przypadku seriala chyba nie jest problemem bo wątek utworzony zostaje raz i cały czas się wykonujem to odpalanie 50 razy na sekunde wątków liczących dla każdego z czujników nie jest najlepszym rozwiązaniem
Pytanie co powinienem użyć do tworzenia nowych wątków: thread, threadPool czy coś innego?
ps dodam że funckje obliczające są dość wymagające i powinny zostać potraktowane priorytetowo.
#pytanie #csharp #wpf #programowanie