Async – Delayed_Single_Command


Async command z opóźnieniem

Kolejny kawałek kodu odpowiedzialny za kontrolowanie wywołania innej funkcji. Przykład zastosowania klasy DelayedSingleCommand:

  • w odtwarzaczu video ukrywamy kursor myszki 5 sekund po ostatnim poruszeniu myszką,
  • przetwarzamy ponownie dany plik, jeśli uległ modyfikacji, ale przez ostatnie 100 sekund już nie był modyfikowany ponownie.

Opis działania klasy przedstawia się następująco:

  • w chwili pojawienia się wywołania rozpoczynamy odliczanie czasu Δ,
  • jeśli w czasie oczekiwania Δ pojawiło się kolejne wywołanie, resetujemy licznik czasu,
  • jeśli czas Δ upłynie, wywołujemy wówczas kontrolowaną funkcję,
  • kontrolowana funkcja będzie wywołana w kontekście wątku tworzącego obiekt lub w wątku timera zależnie od parametru przekazanego w konstruktorze,
  • w przypadku wyrzucenia wyjątku w kontrolowanej funkcji, przekazujemy go do funkcji obsługi wyjątku, jeśli jest zdefiniowana.

Implementacja

Kilka prymitywnych testów jednostkowych

Odnośniki

Dodaj komentarz

Twój adres email nie zostanie opublikowany.