Witam wszystkich.
Mam spory problem i nie wiem jak się do tego zabrać.
Napisałem pewny interfejs (biblioteka DLL) pomiędzy programem na PC a urządzeniem zewnętrznym na mikrokontrolerze.
Program uruchamia w mojej bibliotece metodę, która sprawdza stan urządzenia i oczekuje odpowiedzi true lub false.
Problem polega na tym, że czas w jakim otrzymuję odpowiedź z urządzenia to nawet 60 sekund a ja kompletnie nie wiem jak opóźnić zwrócenie odpowiedzi do programu do czasu otrzymania odpowiedzi z urządzenia.
Obecnie zrobiłem to prymitywnie w pętli:
public bool StatusPOS()
{
for(int i=0; i<60000; i++)
{
Thread.Sleep(1);
if(_status)
{
i = 60000;
}
}
return _status;
}
Wszystko działa ok, ale może być sytuacja gdzie w tym czasie program próbuje wywołać inną metodę a powyższym kodem blokuję całą bibliotekę do czasu odpowiedzi z urządzenia.
Próbowałem Thread.Join(), ale to mi też blokuje.
Czy może ktoś mi podpowiedzieć jaką metodą powinienem to rozwiązać?