Mam zamiar wdrożyć archetypowe rozwiązanie FileSystemWatcher. Mam katalog do monitorowania tworzenia plików i zadanie wysysania utworzonych plików i wstawienia do bazy danych. Z grubsza będzie to wymagało odczytania i przetworzenia 6 lub 7 plików tekstowych o wartości 80 znaków, które pojawiają się z szybkością 150 ms w seriach, które pojawiają się co kilka sekund, a rzadko trzeba też przetworzyć plik binarny o wielkości 2 MB. Najprawdopodobniej będzie to proces 24/7.Po uruchomieniu FileSystemWatcher - Pula wątków lub dedykowany wątek?
Z tego, co przeczytałem na temat obiektu FileSystemWatcher, lepiej jest uporządkować jego zdarzenia w jednym wątku, a następnie wycofać/przetworzyć je w innym wątku. Dylemat, jaki mam teraz, byłby lepszym mechanizmem tworzenia wątku, który przetwarza dane. Wybory widzę to:
Za każdym razem dostaję zdarzenie FSW ręcznie utworzyć nowy wątek (Tak wiem .. głupiego architekturę, ale musiałem to powiedzieć).
Rzuć przetwarzanie w puli wątków CLR ilekroć pojawia się zdarzenie FSW
przy starcie, tworzenie dedykowanego drugą nitkę na przetwarzanie i wykorzystanie modelu producent/konsumentów do obsługi pracy. Główny wątek wpisuje żądanie, a drugi wątek usuwa go i wykonuje pracę.
mam tendencję w kierunku trzeciej metody jako preferowana co wiem zawsze będzie wymagane nić praca - a także prawdopodobnie bardziej, że nie mam wyczucie puli wątków.
+1, Dodam, że korzystanie z puli wątków będzie próbowało obsługiwać twoje żądania jednocześnie na wielu wątkach, co nie brzmi dobrze dla twojej aplikacji. –
Anon .. Z tego, co przetestowałem zrobiłem moje przetwarzanie powinno być zrobione dobrze i prawdziwie w 150mS, z wyjątkiem przypadku przetwarzania plików binarnych - który będzie działał na około 150mS, ale powinno być tak rzadkim przypadkiem, że będzie dużo czas na nadrobienie zaległości, jeśli coś stanie w kolejce. –