Odczyt z portu na wątkach

0

Piszę program do komunikacji z urządzeniem na porcie RS. Główna idea polega na ciągłym odczytywaniu danych z urządzenia i wyświetlania ich w kontrolkach na formie, a w razie konieczności między odczytami także zapisywanie danych w urządzeniu. Chcę żeby operacje na porcie działały w innym wątku niż główny, tzn. odczyt i zapis w tym samym.
Ja to widzę mniej więcej tak: wątek portu dostaje żądanie odczytu danych, a po odczytaniu daje znać wątkowi głównemu, że skończył. Wtedy wątek główny wypełnia kontrolki odczytanymi wartościami i jeżeli użytkownik zmienił wartość w którejś kontrolce następuje zapis do urządzenia, a potem znowu odczyt, i tak dookoła.
Problem w tym, że nie bardzo wiem jak to z tymi wątkami. Jakoś nigdy się za to nie brałem, a po tym co przeczytałem dalej nie dużo wiem. Zależy mi na tym, żeby uzupełnianie kontrolek wywoływane było w wątku głównym, żeby ominąć Invoke() dla każdej kontrolki bo trochę ich jest, i żeby odczytywanie nie zawieszało interfejsu, bo ten odczyt zamierzam robić z dwóch lub więcej urządzeń, o ile uda mi się z jednym.
Nie zamieszczam żadnego kodu bo to chyba nie ma sensu, proszę o jakieś pomysłu wtedy coś napocę.
Z góry dzięki za pomoc

0

Hej. Ostatnio robiłem coś podobnego i zrobiłem to tak (nie wiem czy w 100% dobrze):

  1. wątek czyta sobie z portu i gdy przeczyta jakąś porcję danych wywołuje zdarzenie
  2. metoda obsługująca zdarzenie w głównym wątku, odbiera dane i przetwarza je
  3. do update'u kontrolek jest delegat i jest wywoływany z Form.Invoke (wszystkie kontrolki są w jednym wątku)

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